"""
__UMLRT2Kiltera_MM_MDL.py_____________________________________________________

Automatically generated AToM3 Model File (Do not modify directly)
Author: gehan
Modified: Sat Jun 28 15:48:53 2014
______________________________________________________________________________
"""
from stickylink import *
from widthXfillXdecoration import *
from CD_Class3 import *
from CD_Association3 import *
from graph_CD_Association3 import *
from graph_CD_Class3 import *
from ATOM3Enum import *
from ATOM3String import *
from ATOM3BottomType import *
from ATOM3Constraint import *
from ATOM3Attribute import *
from ATOM3Float import *
from ATOM3List import *
from ATOM3Link import *
from ATOM3Connection import *
from ATOM3Boolean import *
from ATOM3Appearance import *
from ATOM3Text import *
from ATOM3Action import *
from ATOM3Integer import *
from ATOM3Port import *
from ATOM3MSEnum import *

def UMLRT2Kiltera_MM_MDL(self, rootNode, CD_ClassDiagramsV3RootNode=None):

    # --- Generating attributes code for ASG CD_ClassDiagramsV3 ---
    if( CD_ClassDiagramsV3RootNode ): 
        # name
        CD_ClassDiagramsV3RootNode.name.setValue('UMLRT2Kiltera_MM')

        # author
        CD_ClassDiagramsV3RootNode.author.setValue('Annonymous')

        # showCardinalities
        CD_ClassDiagramsV3RootNode.showCardinalities.setValue((None, 1))
        CD_ClassDiagramsV3RootNode.showCardinalities.config = 0

        # showAssociationBox
        CD_ClassDiagramsV3RootNode.showAssociationBox.setValue((None, 1))
        CD_ClassDiagramsV3RootNode.showAssociationBox.config = 0

        # description
        CD_ClassDiagramsV3RootNode.description.setValue('\n')
        CD_ClassDiagramsV3RootNode.description.setHeight(15)

        # showAttributes
        CD_ClassDiagramsV3RootNode.showAttributes.setValue((None, 1))
        CD_ClassDiagramsV3RootNode.showAttributes.config = 0

        # showActions
        CD_ClassDiagramsV3RootNode.showActions.setValue((None, 1))
        CD_ClassDiagramsV3RootNode.showActions.config = 0

        # showConditions
        CD_ClassDiagramsV3RootNode.showConditions.setValue((None, 1))
        CD_ClassDiagramsV3RootNode.showConditions.config = 0

        # attributes
        CD_ClassDiagramsV3RootNode.attributes.setActionFlags([ 1, 1, 1, 0])
        lcobj1 =[]
        cobj1=ATOM3Attribute(self.types)
        cobj1.setValue(('name', 'String', None, ('Key', 1), ('Direct Editing', 1)))
        cobj1.initialValue=ATOM3String('', 20)
        cobj1.isDerivedAttribute = False
        lcobj1.append(cobj1)
        cobj1=ATOM3Attribute(self.types)
        cobj1.setValue(('author', 'String', None, ('Key', 0), ('Direct Editing', 1)))
        cobj1.initialValue=ATOM3String('Annonymous', 20)
        cobj1.isDerivedAttribute = False
        lcobj1.append(cobj1)
        cobj1=ATOM3Attribute(self.types)
        cobj1.setValue(('description', 'Text', None, ('Key', 0), ('Direct Editing', 1)))
        cobj1.initialValue=ATOM3Text('\n', 60,15 )
        cobj1.isDerivedAttribute = False
        lcobj1.append(cobj1)
        CD_ClassDiagramsV3RootNode.attributes.setValue(lcobj1)

        # constraints
        CD_ClassDiagramsV3RootNode.constraints.setActionFlags([ 1, 1, 1, 0])
        lcobj1 =[]
        CD_ClassDiagramsV3RootNode.constraints.setValue(lcobj1)
    # --- ASG attributes over ---


    self.obj28=CD_Class3(self)
    self.obj28.isGraphObjectVisual = True

    if(hasattr(self.obj28, '_setHierarchicalLink')):
      self.obj28._setHierarchicalLink(False)

    # QOCA
    self.obj28.QOCA.setValue(('QOCA', (['Python', 'OCL'], 1), (['PREaction', 'POSTaction'], 1), (['EDIT', 'SAVE', 'CREATE', 'CONNECT', 'DELETE', 'DISCONNECT', 'TRANSFORM', 'SELECT', 'DRAG', 'DROP', 'MOVE'], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), '"""\nQOCA Constraint Template\nNOTE: DO NOT select a POST/PRE action trigger\nConstraints will be added/removed in a logical manner by other mechanisms.\n"""\nreturn # <---- Remove this to use QOCA\n\n""" Get the high level constraint helper and solver """\nfrom Qoca.atom3constraints.OffsetConstraints import OffsetConstraints\noc = OffsetConstraints(self.parent.qocaSolver)  \n\n"""\nExample constraint, see Kernel/QOCA/atom3constraints/OffsetConstraints.py\nFor more types of constraints\n"""\noc.fixedWidth(self.graphObject_, self.graphObject_.sizeX)\noc.fixedHeight(self.graphObject_, self.graphObject_.sizeY)\n\n'))

    # Graphical_Appearance
    self.obj28.Graphical_Appearance.setValue( ('MatchModel', self.obj28))

    # name
    self.obj28.name.setValue('MatchModel')

    # attributes
    self.obj28.attributes.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    self.obj28.attributes.setValue(lcobj2)

    # Abstract
    self.obj28.Abstract.setValue((None, 0))
    self.obj28.Abstract.config = 0

    # cardinality
    self.obj28.cardinality.setActionFlags([ 0, 1, 0, 0])
    lcobj2 =[]
    cobj2=ATOM3Connection()
    cobj2.setValue(('paired_with', (('Source', 'Destination'), 0), '1', '1'))
    lcobj2.append(cobj2)
    cobj2=ATOM3Connection()
    cobj2.setValue(('match_contains', (('Source', 'Destination'), 0), '0', 'N'))
    lcobj2.append(cobj2)
    self.obj28.cardinality.setValue(lcobj2)

    # display
    self.obj28.display.setValue('Multiplicities:\n  - To paired_with: 1 to 1\n  - To match_contains: 0 to N\n')
    self.obj28.display.setHeight(15)

    # Actions
    self.obj28.Actions.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    self.obj28.Actions.setValue(lcobj2)

    # Constraints
    self.obj28.Constraints.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    self.obj28.Constraints.setValue(lcobj2)

    self.obj28.graphClass_= graph_CD_Class3
    if self.genGraphics:
       new_obj = graph_CD_Class3(20.0,20.0,self.obj28)
       new_obj.DrawObject(self.UMLmodel)
       self.UMLmodel.addtag_withtag("CD_Class3", new_obj.tag)
       new_obj.layConstraints = dict() # Graphical Layout Constraints 
       new_obj.layConstraints['scale'] = [1.1046875, 1.0]
    else: new_obj = None
    self.obj28.graphObject_ = new_obj

    # Add node to the root: rootNode
    rootNode.addNode(self.obj28)
    self.globalAndLocalPostcondition(self.obj28, rootNode)
    self.obj28.postAction( rootNode.CREATE )

    self.obj29=CD_Class3(self)
    self.obj29.isGraphObjectVisual = True

    if(hasattr(self.obj29, '_setHierarchicalLink')):
      self.obj29._setHierarchicalLink(False)

    # QOCA
    self.obj29.QOCA.setValue(('QOCA', (['Python', 'OCL'], 1), (['PREaction', 'POSTaction'], 1), (['EDIT', 'SAVE', 'CREATE', 'CONNECT', 'DELETE', 'DISCONNECT', 'TRANSFORM', 'SELECT', 'DRAG', 'DROP', 'MOVE'], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), '"""\nQOCA Constraint Template\nNOTE: DO NOT select a POST/PRE action trigger\nConstraints will be added/removed in a logical manner by other mechanisms.\n"""\nreturn # <---- Remove this to use QOCA\n\n""" Get the high level constraint helper and solver """\nfrom Qoca.atom3constraints.OffsetConstraints import OffsetConstraints\noc = OffsetConstraints(self.parent.qocaSolver)  \n\n"""\nExample constraint, see Kernel/QOCA/atom3constraints/OffsetConstraints.py\nFor more types of constraints\n"""\noc.fixedWidth(self.graphObject_, self.graphObject_.sizeX)\noc.fixedHeight(self.graphObject_, self.graphObject_.sizeY)\n\n'))

    # Graphical_Appearance
    self.obj29.Graphical_Appearance.setValue( ('ApplyModel', self.obj29))

    # name
    self.obj29.name.setValue('ApplyModel')

    # attributes
    self.obj29.attributes.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    self.obj29.attributes.setValue(lcobj2)

    # Abstract
    self.obj29.Abstract.setValue((None, 0))
    self.obj29.Abstract.config = 0

    # cardinality
    self.obj29.cardinality.setActionFlags([ 0, 1, 0, 0])
    lcobj2 =[]
    cobj2=ATOM3Connection()
    cobj2.setValue(('paired_with', (('Source', 'Destination'), 1), '1', '1'))
    lcobj2.append(cobj2)
    cobj2=ATOM3Connection()
    cobj2.setValue(('apply_contains', (('Source', 'Destination'), 0), '0', 'N'))
    lcobj2.append(cobj2)
    self.obj29.cardinality.setValue(lcobj2)

    # display
    self.obj29.display.setValue('Multiplicities:\n  - From paired_with: 1 to 1\n  - To apply_contains: 0 to N\n')
    self.obj29.display.setHeight(15)

    # Actions
    self.obj29.Actions.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    self.obj29.Actions.setValue(lcobj2)

    # Constraints
    self.obj29.Constraints.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    self.obj29.Constraints.setValue(lcobj2)

    self.obj29.graphClass_= graph_CD_Class3
    if self.genGraphics:
       new_obj = graph_CD_Class3(80.0,1340.0,self.obj29)
       new_obj.DrawObject(self.UMLmodel)
       self.UMLmodel.addtag_withtag("CD_Class3", new_obj.tag)
       new_obj.layConstraints = dict() # Graphical Layout Constraints 
       new_obj.layConstraints['scale'] = [1.0828125, 1.0]
    else: new_obj = None
    self.obj29.graphObject_ = new_obj

    # Add node to the root: rootNode
    rootNode.addNode(self.obj29)
    self.globalAndLocalPostcondition(self.obj29, rootNode)
    self.obj29.postAction( rootNode.CREATE )

    self.obj30=CD_Class3(self)
    self.obj30.isGraphObjectVisual = True

    if(hasattr(self.obj30, '_setHierarchicalLink')):
      self.obj30._setHierarchicalLink(False)

    # QOCA
    self.obj30.QOCA.setValue(('QOCA', (['Python', 'OCL'], 1), (['PREaction', 'POSTaction'], 1), (['EDIT', 'SAVE', 'CREATE', 'CONNECT', 'DELETE', 'DISCONNECT', 'TRANSFORM', 'SELECT', 'DRAG', 'DROP', 'MOVE'], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), '"""\nQOCA Constraint Template\nNOTE: DO NOT select a POST/PRE action trigger\nConstraints will be added/removed in a logical manner by other mechanisms.\n"""\nreturn # <---- Remove this to use QOCA\n\n""" Get the high level constraint helper and solver """\nfrom Qoca.atom3constraints.OffsetConstraints import OffsetConstraints\noc = OffsetConstraints(self.parent.qocaSolver)  \n\n"""\nExample constraint, see Kernel/QOCA/atom3constraints/OffsetConstraints.py\nFor more types of constraints\n"""\noc.fixedWidth(self.graphObject_, self.graphObject_.sizeX)\noc.fixedHeight(self.graphObject_, self.graphObject_.sizeY)\n\n'))

    # Graphical_Appearance
    self.obj30.Graphical_Appearance.setValue( ('MetaModelElement_S', self.obj30))

    # name
    self.obj30.name.setValue('MetaModelElement_S')

    # attributes
    self.obj30.attributes.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    cobj2=ATOM3Attribute(self.types)
    cobj2.setValue(('cardinality', 'String', None, ('Key', 0), ('Direct Editing', 1)))
    cobj2.initialValue=ATOM3String('1', 20)
    cobj2.isDerivedAttribute = False
    lcobj2.append(cobj2)
    cobj2=ATOM3Attribute(self.types)
    cobj2.setValue(('classtype', 'String', None, ('Key', 0), ('Direct Editing', 1)))
    cobj2.initialValue=ATOM3String('t_', 20)
    cobj2.isDerivedAttribute = False
    lcobj2.append(cobj2)
    cobj2=ATOM3Attribute(self.types)
    cobj2.setValue(('name', 'String', None, ('Key', 1), ('Direct Editing', 1)))
    cobj2.initialValue=ATOM3String('s_', 20)
    cobj2.isDerivedAttribute = False
    lcobj2.append(cobj2)
    self.obj30.attributes.setValue(lcobj2)

    # Abstract
    self.obj30.Abstract.setValue((None, 1))
    self.obj30.Abstract.config = 0

    # cardinality
    self.obj30.cardinality.setActionFlags([ 0, 1, 0, 0])
    lcobj2 =[]
    cobj2=ATOM3Connection()
    cobj2.setValue(('match_contains', (('Source', 'Destination'), 1), '0', 'N'))
    lcobj2.append(cobj2)
    cobj2=ATOM3Connection()
    cobj2.setValue(('directLink_S', (('Source', 'Destination'), 0), '0', 'N'))
    lcobj2.append(cobj2)
    cobj2=ATOM3Connection()
    cobj2.setValue(('directLink_S', (('Source', 'Destination'), 1), '0', 'N'))
    lcobj2.append(cobj2)
    cobj2=ATOM3Connection()
    cobj2.setValue(('indirectLink_S', (('Source', 'Destination'), 0), '0', 'N'))
    lcobj2.append(cobj2)
    cobj2=ATOM3Connection()
    cobj2.setValue(('indirectLink_S', (('Source', 'Destination'), 1), '0', 'N'))
    lcobj2.append(cobj2)
    cobj2=ATOM3Connection()
    cobj2.setValue(('trace_link', (('Source', 'Destination'), 1), '0', 'N'))
    lcobj2.append(cobj2)
    cobj2=ATOM3Connection()
    cobj2.setValue(('backward_link', (('Source', 'Destination'), 1), '0', 'N'))
    lcobj2.append(cobj2)
    self.obj30.cardinality.setValue(lcobj2)

    # display
    self.obj30.display.setValue('Attributes:\n  - cardinality :: String\n  - classtype :: String\n  - name :: String\nMultiplicities:\n  - From match_contains: 0 to N\n  - To directLink_S: 0 to N\n  - From directLink_S: 0 to N\n  - To indirectLink_S: 0 to N\n  - From indirectLink_S: 0 to N\n  - From trace_link: 0 to N\n  - From backward_link: 0 to N\n')
    self.obj30.display.setHeight(15)

    # Actions
    self.obj30.Actions.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    self.obj30.Actions.setValue(lcobj2)

    # Constraints
    self.obj30.Constraints.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    self.obj30.Constraints.setValue(lcobj2)

    self.obj30.graphClass_= graph_CD_Class3
    if self.genGraphics:
       new_obj = graph_CD_Class3(600.0,20.0,self.obj30)
       new_obj.DrawObject(self.UMLmodel)
       self.UMLmodel.addtag_withtag("CD_Class3", new_obj.tag)
       new_obj.layConstraints = dict() # Graphical Layout Constraints 
       new_obj.layConstraints['scale'] = [1.203125, 2.1688524590163936]
    else: new_obj = None
    self.obj30.graphObject_ = new_obj

    # Add node to the root: rootNode
    rootNode.addNode(self.obj30)
    self.globalAndLocalPostcondition(self.obj30, rootNode)
    self.obj30.postAction( rootNode.CREATE )

    self.obj31=CD_Class3(self)
    self.obj31.isGraphObjectVisual = True

    if(hasattr(self.obj31, '_setHierarchicalLink')):
      self.obj31._setHierarchicalLink(False)

    # QOCA
    self.obj31.QOCA.setValue(('QOCA', (['Python', 'OCL'], 1), (['PREaction', 'POSTaction'], 1), (['EDIT', 'SAVE', 'CREATE', 'CONNECT', 'DELETE', 'DISCONNECT', 'TRANSFORM', 'SELECT', 'DRAG', 'DROP', 'MOVE'], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), '"""\nQOCA Constraint Template\nNOTE: DO NOT select a POST/PRE action trigger\nConstraints will be added/removed in a logical manner by other mechanisms.\n"""\nreturn # <---- Remove this to use QOCA\n\n""" Get the high level constraint helper and solver """\nfrom Qoca.atom3constraints.OffsetConstraints import OffsetConstraints\noc = OffsetConstraints(self.parent.qocaSolver)  \n\n"""\nExample constraint, see Kernel/QOCA/atom3constraints/OffsetConstraints.py\nFor more types of constraints\n"""\noc.fixedWidth(self.graphObject_, self.graphObject_.sizeX)\noc.fixedHeight(self.graphObject_, self.graphObject_.sizeY)\n\n'))

    # Graphical_Appearance
    self.obj31.Graphical_Appearance.setValue( ('MetaModelElement_T', self.obj31))

    # name
    self.obj31.name.setValue('MetaModelElement_T')

    # attributes
    self.obj31.attributes.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    cobj2=ATOM3Attribute(self.types)
    cobj2.setValue(('cardinality', 'String', None, ('Key', 0), ('Direct Editing', 1)))
    cobj2.initialValue=ATOM3String('1', 20)
    cobj2.isDerivedAttribute = False
    lcobj2.append(cobj2)
    cobj2=ATOM3Attribute(self.types)
    cobj2.setValue(('classtype', 'String', None, ('Key', 0), ('Direct Editing', 1)))
    cobj2.initialValue=ATOM3String('t_', 20)
    cobj2.isDerivedAttribute = False
    lcobj2.append(cobj2)
    cobj2=ATOM3Attribute(self.types)
    cobj2.setValue(('name', 'String', None, ('Key', 0), ('Direct Editing', 1)))
    cobj2.initialValue=ATOM3String('s_', 20)
    cobj2.isDerivedAttribute = False
    lcobj2.append(cobj2)
    self.obj31.attributes.setValue(lcobj2)

    # Abstract
    self.obj31.Abstract.setValue((None, 1))
    self.obj31.Abstract.config = 0

    # cardinality
    self.obj31.cardinality.setActionFlags([ 0, 1, 0, 0])
    lcobj2 =[]
    cobj2=ATOM3Connection()
    cobj2.setValue(('apply_contains', (('Source', 'Destination'), 1), '0', 'N'))
    lcobj2.append(cobj2)
    cobj2=ATOM3Connection()
    cobj2.setValue(('directLink_T', (('Source', 'Destination'), 0), '0', 'N'))
    lcobj2.append(cobj2)
    cobj2=ATOM3Connection()
    cobj2.setValue(('directLink_T', (('Source', 'Destination'), 1), '0', 'N'))
    lcobj2.append(cobj2)
    cobj2=ATOM3Connection()
    cobj2.setValue(('trace_link', (('Source', 'Destination'), 0), '0', 'N'))
    lcobj2.append(cobj2)
    cobj2=ATOM3Connection()
    cobj2.setValue(('backward_link', (('Source', 'Destination'), 0), '0', 'N'))
    lcobj2.append(cobj2)
    self.obj31.cardinality.setValue(lcobj2)

    # display
    self.obj31.display.setValue('Attributes:\n  - cardinality :: String\n  - classtype :: String\n  - name :: String\nMultiplicities:\n  - From apply_contains: 0 to N\n  - To directLink_T: 0 to N\n  - From directLink_T: 0 to N\n  - To trace_link: 0 to N\n  - To backward_link: 0 to N\n')
    self.obj31.display.setHeight(15)

    # Actions
    self.obj31.Actions.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    self.obj31.Actions.setValue(lcobj2)

    # Constraints
    self.obj31.Constraints.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    self.obj31.Constraints.setValue(lcobj2)

    self.obj31.graphClass_= graph_CD_Class3
    if self.genGraphics:
       new_obj = graph_CD_Class3(960.0,1240.0,self.obj31)
       new_obj.DrawObject(self.UMLmodel)
       self.UMLmodel.addtag_withtag("CD_Class3", new_obj.tag)
       new_obj.layConstraints = dict() # Graphical Layout Constraints 
       new_obj.layConstraints['scale'] = [1.1812500000000001, 1.8073770491803278]
    else: new_obj = None
    self.obj31.graphObject_ = new_obj

    # Add node to the root: rootNode
    rootNode.addNode(self.obj31)
    self.globalAndLocalPostcondition(self.obj31, rootNode)
    self.obj31.postAction( rootNode.CREATE )

    self.obj32=CD_Association3(self)
    self.obj32.isGraphObjectVisual = True

    if(hasattr(self.obj32, '_setHierarchicalLink')):
      self.obj32._setHierarchicalLink(False)

    # QOCA
    self.obj32.QOCA.setValue(('QOCA', (['Python', 'OCL'], 1), (['PREaction', 'POSTaction'], 1), (['EDIT', 'SAVE', 'CREATE', 'CONNECT', 'DELETE', 'DISCONNECT', 'TRANSFORM', 'SELECT', 'DRAG', 'DROP', 'MOVE'], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), '"""\nQOCA Constraint Template\nNOTE: DO NOT select a POST/PRE action trigger\nConstraints will be added/removed in a logical manner by other mechanisms.\n"""\nreturn # <--- Remove this if you want to use QOCA\n\n# Get the high level constraint helper and solver\nfrom Qoca.atom3constraints.OffsetConstraints import OffsetConstraints\noc = OffsetConstraints(self.parent.qocaSolver)  \n\n# Constraint only makes sense if there exists 2 objects connected to this link\nif(not (self.in_connections_ and self.out_connections_)): return\n\n# Get the graphical objects (subclass of graphEntity/graphLink) \ngraphicalObjectLink = self.graphObject_\ngraphicalObjectSource = self.in_connections_[0].graphObject_\ngraphicalObjectTarget = self.out_connections_[0].graphObject_\nobjTuple = (graphicalObjectSource, graphicalObjectTarget, graphicalObjectLink)\n\n"""\nExample constraint, see Kernel/QOCA/atom3constraints/OffsetConstraints.py\nFor more types of constraints\n"""\noc.LeftExactDistance(objTuple, 20)\noc.resolve() # Resolve immediately after creating entity & constraint \n\n'))

    # Graphical_Appearance
    self.obj32.Graphical_Appearance.setValue( ('paired_with', self.obj32))
    self.obj32.Graphical_Appearance.linkInfo=linkEditor(self,self.obj32.Graphical_Appearance.semObject, "paired_with")
    self.obj32.Graphical_Appearance.linkInfo.FirstLink= stickylink()
    self.obj32.Graphical_Appearance.linkInfo.FirstLink.arrow=ATOM3Boolean()
    self.obj32.Graphical_Appearance.linkInfo.FirstLink.arrow.setValue((' ', 0))
    self.obj32.Graphical_Appearance.linkInfo.FirstLink.arrow.config = 0
    self.obj32.Graphical_Appearance.linkInfo.FirstLink.arrowShape1=ATOM3Integer(8)
    self.obj32.Graphical_Appearance.linkInfo.FirstLink.arrowShape2=ATOM3Integer(10)
    self.obj32.Graphical_Appearance.linkInfo.FirstLink.arrowShape3=ATOM3Integer(3)
    self.obj32.Graphical_Appearance.linkInfo.FirstLink.decoration=ATOM3Appearance()
    self.obj32.Graphical_Appearance.linkInfo.FirstLink.decoration.setValue( ('paired_with_1stLink', self.obj32.Graphical_Appearance.linkInfo.FirstLink))
    self.obj32.Graphical_Appearance.linkInfo.FirstSegment= widthXfillXdecoration()
    self.obj32.Graphical_Appearance.linkInfo.FirstSegment.width=ATOM3Integer(2)
    self.obj32.Graphical_Appearance.linkInfo.FirstSegment.fill=ATOM3String('black', 20)
    self.obj32.Graphical_Appearance.linkInfo.FirstSegment.stipple=ATOM3String('', 20)
    self.obj32.Graphical_Appearance.linkInfo.FirstSegment.arrow=ATOM3Boolean()
    self.obj32.Graphical_Appearance.linkInfo.FirstSegment.arrow.setValue((' ', 0))
    self.obj32.Graphical_Appearance.linkInfo.FirstSegment.arrow.config = 0
    self.obj32.Graphical_Appearance.linkInfo.FirstSegment.arrowShape1=ATOM3Integer(8)
    self.obj32.Graphical_Appearance.linkInfo.FirstSegment.arrowShape2=ATOM3Integer(10)
    self.obj32.Graphical_Appearance.linkInfo.FirstSegment.arrowShape3=ATOM3Integer(3)
    self.obj32.Graphical_Appearance.linkInfo.FirstSegment.decoration=ATOM3Appearance()
    self.obj32.Graphical_Appearance.linkInfo.FirstSegment.decoration.setValue( ('paired_with_1stSegment', self.obj32.Graphical_Appearance.linkInfo.FirstSegment))
    self.obj32.Graphical_Appearance.linkInfo.FirstSegment.decoration_Position=ATOM3Enum(['Up', 'Down', 'Middle', 'No decoration'],3,0)
    self.obj32.Graphical_Appearance.linkInfo.Center=ATOM3Appearance()
    self.obj32.Graphical_Appearance.linkInfo.Center.setValue( ('paired_with_Center', self.obj32.Graphical_Appearance.linkInfo))
    self.obj32.Graphical_Appearance.linkInfo.SecondSegment= widthXfillXdecoration()
    self.obj32.Graphical_Appearance.linkInfo.SecondSegment.width=ATOM3Integer(2)
    self.obj32.Graphical_Appearance.linkInfo.SecondSegment.fill=ATOM3String('black', 20)
    self.obj32.Graphical_Appearance.linkInfo.SecondSegment.stipple=ATOM3String('', 20)
    self.obj32.Graphical_Appearance.linkInfo.SecondSegment.arrow=ATOM3Boolean()
    self.obj32.Graphical_Appearance.linkInfo.SecondSegment.arrow.setValue((' ', 0))
    self.obj32.Graphical_Appearance.linkInfo.SecondSegment.arrow.config = 0
    self.obj32.Graphical_Appearance.linkInfo.SecondSegment.arrowShape1=ATOM3Integer(8)
    self.obj32.Graphical_Appearance.linkInfo.SecondSegment.arrowShape2=ATOM3Integer(10)
    self.obj32.Graphical_Appearance.linkInfo.SecondSegment.arrowShape3=ATOM3Integer(3)
    self.obj32.Graphical_Appearance.linkInfo.SecondSegment.decoration=ATOM3Appearance()
    self.obj32.Graphical_Appearance.linkInfo.SecondSegment.decoration.setValue( ('paired_with_2ndSegment', self.obj32.Graphical_Appearance.linkInfo.SecondSegment))
    self.obj32.Graphical_Appearance.linkInfo.SecondSegment.decoration_Position=ATOM3Enum(['Up', 'Down', 'Middle', 'No decoration'],3,0)
    self.obj32.Graphical_Appearance.linkInfo.SecondLink= stickylink()
    self.obj32.Graphical_Appearance.linkInfo.SecondLink.arrow=ATOM3Boolean()
    self.obj32.Graphical_Appearance.linkInfo.SecondLink.arrow.setValue((' ', 1))
    self.obj32.Graphical_Appearance.linkInfo.SecondLink.arrow.config = 0
    self.obj32.Graphical_Appearance.linkInfo.SecondLink.arrowShape1=ATOM3Integer(8)
    self.obj32.Graphical_Appearance.linkInfo.SecondLink.arrowShape2=ATOM3Integer(10)
    self.obj32.Graphical_Appearance.linkInfo.SecondLink.arrowShape3=ATOM3Integer(3)
    self.obj32.Graphical_Appearance.linkInfo.SecondLink.decoration=ATOM3Appearance()
    self.obj32.Graphical_Appearance.linkInfo.SecondLink.decoration.setValue( ('paired_with_2ndLink', self.obj32.Graphical_Appearance.linkInfo.SecondLink))
    self.obj32.Graphical_Appearance.linkInfo.FirstLink.decoration.semObject=self.obj32.Graphical_Appearance.semObject
    self.obj32.Graphical_Appearance.linkInfo.FirstSegment.decoration.semObject=self.obj32.Graphical_Appearance.semObject
    self.obj32.Graphical_Appearance.linkInfo.Center.semObject=self.obj32.Graphical_Appearance.semObject
    self.obj32.Graphical_Appearance.linkInfo.SecondSegment.decoration.semObject=self.obj32.Graphical_Appearance.semObject
    self.obj32.Graphical_Appearance.linkInfo.SecondLink.decoration.semObject=self.obj32.Graphical_Appearance.semObject

    # name
    self.obj32.name.setValue('paired_with')

    # displaySelect
    self.obj32.displaySelect.setValue( (['attributes', 'constraints', 'actions', 'cardinality'], [0, 0, 0, 0]) )
    self.obj32.displaySelect.config = 0

    # attributes
    self.obj32.attributes.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    self.obj32.attributes.setValue(lcobj2)

    # cardinality
    self.obj32.cardinality.setActionFlags([ 0, 1, 0, 0])
    lcobj2 =[]
    cobj2=ATOM3Connection()
    cobj2.setValue(('ApplyModel', (('Source', 'Destination'), 0), '1', '1'))
    lcobj2.append(cobj2)
    cobj2=ATOM3Connection()
    cobj2.setValue(('MatchModel', (('Source', 'Destination'), 1), '1', '1'))
    lcobj2.append(cobj2)
    self.obj32.cardinality.setValue(lcobj2)

    # display
    self.obj32.display.setValue('Multiplicities:\n  - To ApplyModel: 1 to 1\n  - From MatchModel: 1 to 1\n')
    self.obj32.display.setHeight(15)

    # Actions
    self.obj32.Actions.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    self.obj32.Actions.setValue(lcobj2)

    # Constraints
    self.obj32.Constraints.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    self.obj32.Constraints.setValue(lcobj2)

    self.obj32.graphClass_= graph_CD_Association3
    if self.genGraphics:
       new_obj = graph_CD_Association3(127.0,511.0,self.obj32)
       new_obj.DrawObject(self.UMLmodel)
       self.UMLmodel.addtag_withtag("CD_Association3", new_obj.tag)
       new_obj.layConstraints = dict() # Graphical Layout Constraints 
       new_obj.layConstraints['Text Scale'] = 1.09
       new_obj.layConstraints['scale'] = [1.526, 1.0]
    else: new_obj = None
    self.obj32.graphObject_ = new_obj

    # Add node to the root: rootNode
    rootNode.addNode(self.obj32)
    self.globalAndLocalPostcondition(self.obj32, rootNode)
    self.obj32.postAction( rootNode.CREATE )

    self.obj33=CD_Association3(self)
    self.obj33.isGraphObjectVisual = True

    if(hasattr(self.obj33, '_setHierarchicalLink')):
      self.obj33._setHierarchicalLink(False)

    # QOCA
    self.obj33.QOCA.setValue(('QOCA', (['Python', 'OCL'], 1), (['PREaction', 'POSTaction'], 1), (['EDIT', 'SAVE', 'CREATE', 'CONNECT', 'DELETE', 'DISCONNECT', 'TRANSFORM', 'SELECT', 'DRAG', 'DROP', 'MOVE'], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), '"""\nQOCA Constraint Template\nNOTE: DO NOT select a POST/PRE action trigger\nConstraints will be added/removed in a logical manner by other mechanisms.\n"""\nreturn # <--- Remove this if you want to use QOCA\n\n# Get the high level constraint helper and solver\nfrom Qoca.atom3constraints.OffsetConstraints import OffsetConstraints\noc = OffsetConstraints(self.parent.qocaSolver)  \n\n# Constraint only makes sense if there exists 2 objects connected to this link\nif(not (self.in_connections_ and self.out_connections_)): return\n\n# Get the graphical objects (subclass of graphEntity/graphLink) \ngraphicalObjectLink = self.graphObject_\ngraphicalObjectSource = self.in_connections_[0].graphObject_\ngraphicalObjectTarget = self.out_connections_[0].graphObject_\nobjTuple = (graphicalObjectSource, graphicalObjectTarget, graphicalObjectLink)\n\n"""\nExample constraint, see Kernel/QOCA/atom3constraints/OffsetConstraints.py\nFor more types of constraints\n"""\noc.LeftExactDistance(objTuple, 20)\noc.resolve() # Resolve immediately after creating entity & constraint \n\n'))

    # Graphical_Appearance
    self.obj33.Graphical_Appearance.setValue( ('match_contains', self.obj33))
    self.obj33.Graphical_Appearance.linkInfo=linkEditor(self,self.obj33.Graphical_Appearance.semObject, "match_contains")
    self.obj33.Graphical_Appearance.linkInfo.FirstLink= stickylink()
    self.obj33.Graphical_Appearance.linkInfo.FirstLink.arrow=ATOM3Boolean()
    self.obj33.Graphical_Appearance.linkInfo.FirstLink.arrow.setValue((' ', 0))
    self.obj33.Graphical_Appearance.linkInfo.FirstLink.arrow.config = 0
    self.obj33.Graphical_Appearance.linkInfo.FirstLink.arrowShape1=ATOM3Integer(8)
    self.obj33.Graphical_Appearance.linkInfo.FirstLink.arrowShape2=ATOM3Integer(10)
    self.obj33.Graphical_Appearance.linkInfo.FirstLink.arrowShape3=ATOM3Integer(3)
    self.obj33.Graphical_Appearance.linkInfo.FirstLink.decoration=ATOM3Appearance()
    self.obj33.Graphical_Appearance.linkInfo.FirstLink.decoration.setValue( ('match_contains_1stLink', self.obj33.Graphical_Appearance.linkInfo.FirstLink))
    self.obj33.Graphical_Appearance.linkInfo.FirstSegment= widthXfillXdecoration()
    self.obj33.Graphical_Appearance.linkInfo.FirstSegment.width=ATOM3Integer(2)
    self.obj33.Graphical_Appearance.linkInfo.FirstSegment.fill=ATOM3String('black', 20)
    self.obj33.Graphical_Appearance.linkInfo.FirstSegment.stipple=ATOM3String('', 20)
    self.obj33.Graphical_Appearance.linkInfo.FirstSegment.arrow=ATOM3Boolean()
    self.obj33.Graphical_Appearance.linkInfo.FirstSegment.arrow.setValue((' ', 0))
    self.obj33.Graphical_Appearance.linkInfo.FirstSegment.arrow.config = 0
    self.obj33.Graphical_Appearance.linkInfo.FirstSegment.arrowShape1=ATOM3Integer(8)
    self.obj33.Graphical_Appearance.linkInfo.FirstSegment.arrowShape2=ATOM3Integer(10)
    self.obj33.Graphical_Appearance.linkInfo.FirstSegment.arrowShape3=ATOM3Integer(3)
    self.obj33.Graphical_Appearance.linkInfo.FirstSegment.decoration=ATOM3Appearance()
    self.obj33.Graphical_Appearance.linkInfo.FirstSegment.decoration.setValue( ('match_contains_1stSegment', self.obj33.Graphical_Appearance.linkInfo.FirstSegment))
    self.obj33.Graphical_Appearance.linkInfo.FirstSegment.decoration_Position=ATOM3Enum(['Up', 'Down', 'Middle', 'No decoration'],3,0)
    self.obj33.Graphical_Appearance.linkInfo.Center=ATOM3Appearance()
    self.obj33.Graphical_Appearance.linkInfo.Center.setValue( ('match_contains_Center', self.obj33.Graphical_Appearance.linkInfo))
    self.obj33.Graphical_Appearance.linkInfo.SecondSegment= widthXfillXdecoration()
    self.obj33.Graphical_Appearance.linkInfo.SecondSegment.width=ATOM3Integer(2)
    self.obj33.Graphical_Appearance.linkInfo.SecondSegment.fill=ATOM3String('black', 20)
    self.obj33.Graphical_Appearance.linkInfo.SecondSegment.stipple=ATOM3String('', 20)
    self.obj33.Graphical_Appearance.linkInfo.SecondSegment.arrow=ATOM3Boolean()
    self.obj33.Graphical_Appearance.linkInfo.SecondSegment.arrow.setValue((' ', 0))
    self.obj33.Graphical_Appearance.linkInfo.SecondSegment.arrow.config = 0
    self.obj33.Graphical_Appearance.linkInfo.SecondSegment.arrowShape1=ATOM3Integer(8)
    self.obj33.Graphical_Appearance.linkInfo.SecondSegment.arrowShape2=ATOM3Integer(10)
    self.obj33.Graphical_Appearance.linkInfo.SecondSegment.arrowShape3=ATOM3Integer(3)
    self.obj33.Graphical_Appearance.linkInfo.SecondSegment.decoration=ATOM3Appearance()
    self.obj33.Graphical_Appearance.linkInfo.SecondSegment.decoration.setValue( ('match_contains_2ndSegment', self.obj33.Graphical_Appearance.linkInfo.SecondSegment))
    self.obj33.Graphical_Appearance.linkInfo.SecondSegment.decoration_Position=ATOM3Enum(['Up', 'Down', 'Middle', 'No decoration'],3,0)
    self.obj33.Graphical_Appearance.linkInfo.SecondLink= stickylink()
    self.obj33.Graphical_Appearance.linkInfo.SecondLink.arrow=ATOM3Boolean()
    self.obj33.Graphical_Appearance.linkInfo.SecondLink.arrow.setValue((' ', 1))
    self.obj33.Graphical_Appearance.linkInfo.SecondLink.arrow.config = 0
    self.obj33.Graphical_Appearance.linkInfo.SecondLink.arrowShape1=ATOM3Integer(8)
    self.obj33.Graphical_Appearance.linkInfo.SecondLink.arrowShape2=ATOM3Integer(10)
    self.obj33.Graphical_Appearance.linkInfo.SecondLink.arrowShape3=ATOM3Integer(3)
    self.obj33.Graphical_Appearance.linkInfo.SecondLink.decoration=ATOM3Appearance()
    self.obj33.Graphical_Appearance.linkInfo.SecondLink.decoration.setValue( ('match_contains_2ndLink', self.obj33.Graphical_Appearance.linkInfo.SecondLink))
    self.obj33.Graphical_Appearance.linkInfo.FirstLink.decoration.semObject=self.obj33.Graphical_Appearance.semObject
    self.obj33.Graphical_Appearance.linkInfo.FirstSegment.decoration.semObject=self.obj33.Graphical_Appearance.semObject
    self.obj33.Graphical_Appearance.linkInfo.Center.semObject=self.obj33.Graphical_Appearance.semObject
    self.obj33.Graphical_Appearance.linkInfo.SecondSegment.decoration.semObject=self.obj33.Graphical_Appearance.semObject
    self.obj33.Graphical_Appearance.linkInfo.SecondLink.decoration.semObject=self.obj33.Graphical_Appearance.semObject

    # name
    self.obj33.name.setValue('match_contains')

    # displaySelect
    self.obj33.displaySelect.setValue( (['attributes', 'constraints', 'actions', 'cardinality'], [0, 0, 0, 0]) )
    self.obj33.displaySelect.config = 0

    # attributes
    self.obj33.attributes.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    self.obj33.attributes.setValue(lcobj2)

    # cardinality
    self.obj33.cardinality.setActionFlags([ 0, 1, 0, 0])
    lcobj2 =[]
    cobj2=ATOM3Connection()
    cobj2.setValue(('MetaModelElement_S', (('Source', 'Destination'), 0), '0', 'N'))
    lcobj2.append(cobj2)
    cobj2=ATOM3Connection()
    cobj2.setValue(('MatchModel', (('Source', 'Destination'), 1), '0', 'N'))
    lcobj2.append(cobj2)
    self.obj33.cardinality.setValue(lcobj2)

    # display
    self.obj33.display.setValue('Multiplicities:\n  - To MetaModelElement_S: 0 to N\n  - From MatchModel: 0 to N\n')
    self.obj33.display.setHeight(15)

    # Actions
    self.obj33.Actions.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    self.obj33.Actions.setValue(lcobj2)

    # Constraints
    self.obj33.Constraints.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    self.obj33.Constraints.setValue(lcobj2)

    self.obj33.graphClass_= graph_CD_Association3
    if self.genGraphics:
       new_obj = graph_CD_Association3(425.5625,81.0,self.obj33)
       new_obj.DrawObject(self.UMLmodel)
       self.UMLmodel.addtag_withtag("CD_Association3", new_obj.tag)
       new_obj.layConstraints = dict() # Graphical Layout Constraints 
       new_obj.layConstraints['scale'] = [1.7360000000000002, 1.0]
    else: new_obj = None
    self.obj33.graphObject_ = new_obj

    # Add node to the root: rootNode
    rootNode.addNode(self.obj33)
    self.globalAndLocalPostcondition(self.obj33, rootNode)
    self.obj33.postAction( rootNode.CREATE )

    self.obj34=CD_Association3(self)
    self.obj34.isGraphObjectVisual = True

    if(hasattr(self.obj34, '_setHierarchicalLink')):
      self.obj34._setHierarchicalLink(False)

    # QOCA
    self.obj34.QOCA.setValue(('QOCA', (['Python', 'OCL'], 1), (['PREaction', 'POSTaction'], 1), (['EDIT', 'SAVE', 'CREATE', 'CONNECT', 'DELETE', 'DISCONNECT', 'TRANSFORM', 'SELECT', 'DRAG', 'DROP', 'MOVE'], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), '"""\nQOCA Constraint Template\nNOTE: DO NOT select a POST/PRE action trigger\nConstraints will be added/removed in a logical manner by other mechanisms.\n"""\nreturn # <--- Remove this if you want to use QOCA\n\n# Get the high level constraint helper and solver\nfrom Qoca.atom3constraints.OffsetConstraints import OffsetConstraints\noc = OffsetConstraints(self.parent.qocaSolver)  \n\n# Constraint only makes sense if there exists 2 objects connected to this link\nif(not (self.in_connections_ and self.out_connections_)): return\n\n# Get the graphical objects (subclass of graphEntity/graphLink) \ngraphicalObjectLink = self.graphObject_\ngraphicalObjectSource = self.in_connections_[0].graphObject_\ngraphicalObjectTarget = self.out_connections_[0].graphObject_\nobjTuple = (graphicalObjectSource, graphicalObjectTarget, graphicalObjectLink)\n\n"""\nExample constraint, see Kernel/QOCA/atom3constraints/OffsetConstraints.py\nFor more types of constraints\n"""\noc.LeftExactDistance(objTuple, 20)\noc.resolve() # Resolve immediately after creating entity & constraint \n\n'))

    # Graphical_Appearance
    self.obj34.Graphical_Appearance.setValue( ('apply_contains', self.obj34))
    self.obj34.Graphical_Appearance.linkInfo=linkEditor(self,self.obj34.Graphical_Appearance.semObject, "apply_contains")
    self.obj34.Graphical_Appearance.linkInfo.FirstLink= stickylink()
    self.obj34.Graphical_Appearance.linkInfo.FirstLink.arrow=ATOM3Boolean()
    self.obj34.Graphical_Appearance.linkInfo.FirstLink.arrow.setValue((' ', 0))
    self.obj34.Graphical_Appearance.linkInfo.FirstLink.arrow.config = 0
    self.obj34.Graphical_Appearance.linkInfo.FirstLink.arrowShape1=ATOM3Integer(8)
    self.obj34.Graphical_Appearance.linkInfo.FirstLink.arrowShape2=ATOM3Integer(10)
    self.obj34.Graphical_Appearance.linkInfo.FirstLink.arrowShape3=ATOM3Integer(3)
    self.obj34.Graphical_Appearance.linkInfo.FirstLink.decoration=ATOM3Appearance()
    self.obj34.Graphical_Appearance.linkInfo.FirstLink.decoration.setValue( ('apply_contains_1stLink', self.obj34.Graphical_Appearance.linkInfo.FirstLink))
    self.obj34.Graphical_Appearance.linkInfo.FirstSegment= widthXfillXdecoration()
    self.obj34.Graphical_Appearance.linkInfo.FirstSegment.width=ATOM3Integer(2)
    self.obj34.Graphical_Appearance.linkInfo.FirstSegment.fill=ATOM3String('black', 20)
    self.obj34.Graphical_Appearance.linkInfo.FirstSegment.stipple=ATOM3String('', 20)
    self.obj34.Graphical_Appearance.linkInfo.FirstSegment.arrow=ATOM3Boolean()
    self.obj34.Graphical_Appearance.linkInfo.FirstSegment.arrow.setValue((' ', 0))
    self.obj34.Graphical_Appearance.linkInfo.FirstSegment.arrow.config = 0
    self.obj34.Graphical_Appearance.linkInfo.FirstSegment.arrowShape1=ATOM3Integer(8)
    self.obj34.Graphical_Appearance.linkInfo.FirstSegment.arrowShape2=ATOM3Integer(10)
    self.obj34.Graphical_Appearance.linkInfo.FirstSegment.arrowShape3=ATOM3Integer(3)
    self.obj34.Graphical_Appearance.linkInfo.FirstSegment.decoration=ATOM3Appearance()
    self.obj34.Graphical_Appearance.linkInfo.FirstSegment.decoration.setValue( ('apply_contains_1stSegment', self.obj34.Graphical_Appearance.linkInfo.FirstSegment))
    self.obj34.Graphical_Appearance.linkInfo.FirstSegment.decoration_Position=ATOM3Enum(['Up', 'Down', 'Middle', 'No decoration'],3,0)
    self.obj34.Graphical_Appearance.linkInfo.Center=ATOM3Appearance()
    self.obj34.Graphical_Appearance.linkInfo.Center.setValue( ('apply_contains_Center', self.obj34.Graphical_Appearance.linkInfo))
    self.obj34.Graphical_Appearance.linkInfo.SecondSegment= widthXfillXdecoration()
    self.obj34.Graphical_Appearance.linkInfo.SecondSegment.width=ATOM3Integer(2)
    self.obj34.Graphical_Appearance.linkInfo.SecondSegment.fill=ATOM3String('black', 20)
    self.obj34.Graphical_Appearance.linkInfo.SecondSegment.stipple=ATOM3String('', 20)
    self.obj34.Graphical_Appearance.linkInfo.SecondSegment.arrow=ATOM3Boolean()
    self.obj34.Graphical_Appearance.linkInfo.SecondSegment.arrow.setValue((' ', 0))
    self.obj34.Graphical_Appearance.linkInfo.SecondSegment.arrow.config = 0
    self.obj34.Graphical_Appearance.linkInfo.SecondSegment.arrowShape1=ATOM3Integer(8)
    self.obj34.Graphical_Appearance.linkInfo.SecondSegment.arrowShape2=ATOM3Integer(10)
    self.obj34.Graphical_Appearance.linkInfo.SecondSegment.arrowShape3=ATOM3Integer(3)
    self.obj34.Graphical_Appearance.linkInfo.SecondSegment.decoration=ATOM3Appearance()
    self.obj34.Graphical_Appearance.linkInfo.SecondSegment.decoration.setValue( ('apply_contains_2ndSegment', self.obj34.Graphical_Appearance.linkInfo.SecondSegment))
    self.obj34.Graphical_Appearance.linkInfo.SecondSegment.decoration_Position=ATOM3Enum(['Up', 'Down', 'Middle', 'No decoration'],3,0)
    self.obj34.Graphical_Appearance.linkInfo.SecondLink= stickylink()
    self.obj34.Graphical_Appearance.linkInfo.SecondLink.arrow=ATOM3Boolean()
    self.obj34.Graphical_Appearance.linkInfo.SecondLink.arrow.setValue((' ', 1))
    self.obj34.Graphical_Appearance.linkInfo.SecondLink.arrow.config = 0
    self.obj34.Graphical_Appearance.linkInfo.SecondLink.arrowShape1=ATOM3Integer(8)
    self.obj34.Graphical_Appearance.linkInfo.SecondLink.arrowShape2=ATOM3Integer(10)
    self.obj34.Graphical_Appearance.linkInfo.SecondLink.arrowShape3=ATOM3Integer(3)
    self.obj34.Graphical_Appearance.linkInfo.SecondLink.decoration=ATOM3Appearance()
    self.obj34.Graphical_Appearance.linkInfo.SecondLink.decoration.setValue( ('apply_contains_2ndLink', self.obj34.Graphical_Appearance.linkInfo.SecondLink))
    self.obj34.Graphical_Appearance.linkInfo.FirstLink.decoration.semObject=self.obj34.Graphical_Appearance.semObject
    self.obj34.Graphical_Appearance.linkInfo.FirstSegment.decoration.semObject=self.obj34.Graphical_Appearance.semObject
    self.obj34.Graphical_Appearance.linkInfo.Center.semObject=self.obj34.Graphical_Appearance.semObject
    self.obj34.Graphical_Appearance.linkInfo.SecondSegment.decoration.semObject=self.obj34.Graphical_Appearance.semObject
    self.obj34.Graphical_Appearance.linkInfo.SecondLink.decoration.semObject=self.obj34.Graphical_Appearance.semObject

    # name
    self.obj34.name.setValue('apply_contains')

    # displaySelect
    self.obj34.displaySelect.setValue( (['attributes', 'constraints', 'actions', 'cardinality'], [0, 0, 0, 0]) )
    self.obj34.displaySelect.config = 0

    # attributes
    self.obj34.attributes.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    self.obj34.attributes.setValue(lcobj2)

    # cardinality
    self.obj34.cardinality.setActionFlags([ 0, 1, 0, 0])
    lcobj2 =[]
    cobj2=ATOM3Connection()
    cobj2.setValue(('MetaModelElement_T', (('Source', 'Destination'), 0), '0', 'N'))
    lcobj2.append(cobj2)
    cobj2=ATOM3Connection()
    cobj2.setValue(('ApplyModel', (('Source', 'Destination'), 1), '0', 'N'))
    lcobj2.append(cobj2)
    self.obj34.cardinality.setValue(lcobj2)

    # display
    self.obj34.display.setValue('Multiplicities:\n  - To MetaModelElement_T: 0 to N\n  - From ApplyModel: 0 to N\n')
    self.obj34.display.setHeight(15)

    # Actions
    self.obj34.Actions.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    self.obj34.Actions.setValue(lcobj2)

    # Constraints
    self.obj34.Constraints.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    self.obj34.Constraints.setValue(lcobj2)

    self.obj34.graphClass_= graph_CD_Association3
    if self.genGraphics:
       new_obj = graph_CD_Association3(553.123046875,1375.0,self.obj34)
       new_obj.DrawObject(self.UMLmodel)
       self.UMLmodel.addtag_withtag("CD_Association3", new_obj.tag)
       new_obj.layConstraints = dict() # Graphical Layout Constraints 
       new_obj.layConstraints['scale'] = [1.7290000000000001, 1.0]
    else: new_obj = None
    self.obj34.graphObject_ = new_obj

    # Add node to the root: rootNode
    rootNode.addNode(self.obj34)
    self.globalAndLocalPostcondition(self.obj34, rootNode)
    self.obj34.postAction( rootNode.CREATE )

    self.obj35=CD_Association3(self)
    self.obj35.isGraphObjectVisual = True

    if(hasattr(self.obj35, '_setHierarchicalLink')):
      self.obj35._setHierarchicalLink(False)

    # QOCA
    self.obj35.QOCA.setValue(('QOCA', (['Python', 'OCL'], 1), (['PREaction', 'POSTaction'], 1), (['EDIT', 'SAVE', 'CREATE', 'CONNECT', 'DELETE', 'DISCONNECT', 'TRANSFORM', 'SELECT', 'DRAG', 'DROP', 'MOVE'], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), '"""\nQOCA Constraint Template\nNOTE: DO NOT select a POST/PRE action trigger\nConstraints will be added/removed in a logical manner by other mechanisms.\n"""\nreturn # <--- Remove this if you want to use QOCA\n\n# Get the high level constraint helper and solver\nfrom Qoca.atom3constraints.OffsetConstraints import OffsetConstraints\noc = OffsetConstraints(self.parent.qocaSolver)  \n\n# Constraint only makes sense if there exists 2 objects connected to this link\nif(not (self.in_connections_ and self.out_connections_)): return\n\n# Get the graphical objects (subclass of graphEntity/graphLink) \ngraphicalObjectLink = self.graphObject_\ngraphicalObjectSource = self.in_connections_[0].graphObject_\ngraphicalObjectTarget = self.out_connections_[0].graphObject_\nobjTuple = (graphicalObjectSource, graphicalObjectTarget, graphicalObjectLink)\n\n"""\nExample constraint, see Kernel/QOCA/atom3constraints/OffsetConstraints.py\nFor more types of constraints\n"""\noc.LeftExactDistance(objTuple, 20)\noc.resolve() # Resolve immediately after creating entity & constraint \n\n'))

    # Graphical_Appearance
    self.obj35.Graphical_Appearance.setValue( ('directLink_T', self.obj35))
    self.obj35.Graphical_Appearance.linkInfo=linkEditor(self,self.obj35.Graphical_Appearance.semObject, "directLink_T")
    self.obj35.Graphical_Appearance.linkInfo.FirstLink= stickylink()
    self.obj35.Graphical_Appearance.linkInfo.FirstLink.arrow=ATOM3Boolean()
    self.obj35.Graphical_Appearance.linkInfo.FirstLink.arrow.setValue((' ', 0))
    self.obj35.Graphical_Appearance.linkInfo.FirstLink.arrow.config = 0
    self.obj35.Graphical_Appearance.linkInfo.FirstLink.arrowShape1=ATOM3Integer(8)
    self.obj35.Graphical_Appearance.linkInfo.FirstLink.arrowShape2=ATOM3Integer(10)
    self.obj35.Graphical_Appearance.linkInfo.FirstLink.arrowShape3=ATOM3Integer(3)
    self.obj35.Graphical_Appearance.linkInfo.FirstLink.decoration=ATOM3Appearance()
    self.obj35.Graphical_Appearance.linkInfo.FirstLink.decoration.setValue( ('directLink_T_1stLink', self.obj35.Graphical_Appearance.linkInfo.FirstLink))
    self.obj35.Graphical_Appearance.linkInfo.FirstSegment= widthXfillXdecoration()
    self.obj35.Graphical_Appearance.linkInfo.FirstSegment.width=ATOM3Integer(2)
    self.obj35.Graphical_Appearance.linkInfo.FirstSegment.fill=ATOM3String('black', 20)
    self.obj35.Graphical_Appearance.linkInfo.FirstSegment.stipple=ATOM3String('', 20)
    self.obj35.Graphical_Appearance.linkInfo.FirstSegment.arrow=ATOM3Boolean()
    self.obj35.Graphical_Appearance.linkInfo.FirstSegment.arrow.setValue((' ', 0))
    self.obj35.Graphical_Appearance.linkInfo.FirstSegment.arrow.config = 0
    self.obj35.Graphical_Appearance.linkInfo.FirstSegment.arrowShape1=ATOM3Integer(8)
    self.obj35.Graphical_Appearance.linkInfo.FirstSegment.arrowShape2=ATOM3Integer(10)
    self.obj35.Graphical_Appearance.linkInfo.FirstSegment.arrowShape3=ATOM3Integer(3)
    self.obj35.Graphical_Appearance.linkInfo.FirstSegment.decoration=ATOM3Appearance()
    self.obj35.Graphical_Appearance.linkInfo.FirstSegment.decoration.setValue( ('directLink_T_1stSegment', self.obj35.Graphical_Appearance.linkInfo.FirstSegment))
    self.obj35.Graphical_Appearance.linkInfo.FirstSegment.decoration_Position=ATOM3Enum(['Up', 'Down', 'Middle', 'No decoration'],3,0)
    self.obj35.Graphical_Appearance.linkInfo.Center=ATOM3Appearance()
    self.obj35.Graphical_Appearance.linkInfo.Center.setValue( ('directLink_T_Center', self.obj35.Graphical_Appearance.linkInfo))
    self.obj35.Graphical_Appearance.linkInfo.SecondSegment= widthXfillXdecoration()
    self.obj35.Graphical_Appearance.linkInfo.SecondSegment.width=ATOM3Integer(2)
    self.obj35.Graphical_Appearance.linkInfo.SecondSegment.fill=ATOM3String('black', 20)
    self.obj35.Graphical_Appearance.linkInfo.SecondSegment.stipple=ATOM3String('', 20)
    self.obj35.Graphical_Appearance.linkInfo.SecondSegment.arrow=ATOM3Boolean()
    self.obj35.Graphical_Appearance.linkInfo.SecondSegment.arrow.setValue((' ', 0))
    self.obj35.Graphical_Appearance.linkInfo.SecondSegment.arrow.config = 0
    self.obj35.Graphical_Appearance.linkInfo.SecondSegment.arrowShape1=ATOM3Integer(8)
    self.obj35.Graphical_Appearance.linkInfo.SecondSegment.arrowShape2=ATOM3Integer(10)
    self.obj35.Graphical_Appearance.linkInfo.SecondSegment.arrowShape3=ATOM3Integer(3)
    self.obj35.Graphical_Appearance.linkInfo.SecondSegment.decoration=ATOM3Appearance()
    self.obj35.Graphical_Appearance.linkInfo.SecondSegment.decoration.setValue( ('directLink_T_2ndSegment', self.obj35.Graphical_Appearance.linkInfo.SecondSegment))
    self.obj35.Graphical_Appearance.linkInfo.SecondSegment.decoration_Position=ATOM3Enum(['Up', 'Down', 'Middle', 'No decoration'],3,0)
    self.obj35.Graphical_Appearance.linkInfo.SecondLink= stickylink()
    self.obj35.Graphical_Appearance.linkInfo.SecondLink.arrow=ATOM3Boolean()
    self.obj35.Graphical_Appearance.linkInfo.SecondLink.arrow.setValue((' ', 1))
    self.obj35.Graphical_Appearance.linkInfo.SecondLink.arrow.config = 0
    self.obj35.Graphical_Appearance.linkInfo.SecondLink.arrowShape1=ATOM3Integer(8)
    self.obj35.Graphical_Appearance.linkInfo.SecondLink.arrowShape2=ATOM3Integer(10)
    self.obj35.Graphical_Appearance.linkInfo.SecondLink.arrowShape3=ATOM3Integer(3)
    self.obj35.Graphical_Appearance.linkInfo.SecondLink.decoration=ATOM3Appearance()
    self.obj35.Graphical_Appearance.linkInfo.SecondLink.decoration.setValue( ('directLink_T_2ndLink', self.obj35.Graphical_Appearance.linkInfo.SecondLink))
    self.obj35.Graphical_Appearance.linkInfo.FirstLink.decoration.semObject=self.obj35.Graphical_Appearance.semObject
    self.obj35.Graphical_Appearance.linkInfo.FirstSegment.decoration.semObject=self.obj35.Graphical_Appearance.semObject
    self.obj35.Graphical_Appearance.linkInfo.Center.semObject=self.obj35.Graphical_Appearance.semObject
    self.obj35.Graphical_Appearance.linkInfo.SecondSegment.decoration.semObject=self.obj35.Graphical_Appearance.semObject
    self.obj35.Graphical_Appearance.linkInfo.SecondLink.decoration.semObject=self.obj35.Graphical_Appearance.semObject

    # name
    self.obj35.name.setValue('directLink_T')

    # displaySelect
    self.obj35.displaySelect.setValue( (['attributes', 'constraints', 'actions', 'cardinality'], [0, 0, 0, 0]) )
    self.obj35.displaySelect.config = 0

    # attributes
    self.obj35.attributes.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    cobj2=ATOM3Attribute(self.types)
    cobj2.setValue(('associationType', 'String', None, ('Key', 0), ('Direct Editing', 1)))
    cobj2.initialValue=ATOM3String('t_', 20)
    cobj2.isDerivedAttribute = False
    lcobj2.append(cobj2)
    self.obj35.attributes.setValue(lcobj2)

    # cardinality
    self.obj35.cardinality.setActionFlags([ 0, 1, 0, 0])
    lcobj2 =[]
    cobj2=ATOM3Connection()
    cobj2.setValue(('MetaModelElement_T', (('Source', 'Destination'), 0), '0', 'N'))
    lcobj2.append(cobj2)
    cobj2=ATOM3Connection()
    cobj2.setValue(('MetaModelElement_T', (('Source', 'Destination'), 1), '0', 'N'))
    lcobj2.append(cobj2)
    self.obj35.cardinality.setValue(lcobj2)

    # display
    self.obj35.display.setValue('Attributes:\n  - associationType :: String\nMultiplicities:\n  - To MetaModelElement_T: 0 to N\n  - From MetaModelElement_T: 0 to N\n')
    self.obj35.display.setHeight(15)

    # Actions
    self.obj35.Actions.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    self.obj35.Actions.setValue(lcobj2)

    # Constraints
    self.obj35.Constraints.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    self.obj35.Constraints.setValue(lcobj2)

    self.obj35.graphClass_= graph_CD_Association3
    if self.genGraphics:
       new_obj = graph_CD_Association3(1373.58007812,1220.0,self.obj35)
       new_obj.DrawObject(self.UMLmodel)
       self.UMLmodel.addtag_withtag("CD_Association3", new_obj.tag)
       new_obj.layConstraints = dict() # Graphical Layout Constraints 
       new_obj.layConstraints['scale'] = [1.855, 1.185483870967742]
    else: new_obj = None
    self.obj35.graphObject_ = new_obj

    # Add node to the root: rootNode
    rootNode.addNode(self.obj35)
    self.globalAndLocalPostcondition(self.obj35, rootNode)
    self.obj35.postAction( rootNode.CREATE )

    self.obj36=CD_Association3(self)
    self.obj36.isGraphObjectVisual = True

    if(hasattr(self.obj36, '_setHierarchicalLink')):
      self.obj36._setHierarchicalLink(False)

    # QOCA
    self.obj36.QOCA.setValue(('QOCA', (['Python', 'OCL'], 1), (['PREaction', 'POSTaction'], 1), (['EDIT', 'SAVE', 'CREATE', 'CONNECT', 'DELETE', 'DISCONNECT', 'TRANSFORM', 'SELECT', 'DRAG', 'DROP', 'MOVE'], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), '"""\nQOCA Constraint Template\nNOTE: DO NOT select a POST/PRE action trigger\nConstraints will be added/removed in a logical manner by other mechanisms.\n"""\nreturn # <--- Remove this if you want to use QOCA\n\n# Get the high level constraint helper and solver\nfrom Qoca.atom3constraints.OffsetConstraints import OffsetConstraints\noc = OffsetConstraints(self.parent.qocaSolver)  \n\n# Constraint only makes sense if there exists 2 objects connected to this link\nif(not (self.in_connections_ and self.out_connections_)): return\n\n# Get the graphical objects (subclass of graphEntity/graphLink) \ngraphicalObjectLink = self.graphObject_\ngraphicalObjectSource = self.in_connections_[0].graphObject_\ngraphicalObjectTarget = self.out_connections_[0].graphObject_\nobjTuple = (graphicalObjectSource, graphicalObjectTarget, graphicalObjectLink)\n\n"""\nExample constraint, see Kernel/QOCA/atom3constraints/OffsetConstraints.py\nFor more types of constraints\n"""\noc.LeftExactDistance(objTuple, 20)\noc.resolve() # Resolve immediately after creating entity & constraint \n\n'))

    # Graphical_Appearance
    self.obj36.Graphical_Appearance.setValue( ('directLink_S', self.obj36))
    self.obj36.Graphical_Appearance.linkInfo=linkEditor(self,self.obj36.Graphical_Appearance.semObject, "directLink_S")
    self.obj36.Graphical_Appearance.linkInfo.FirstLink= stickylink()
    self.obj36.Graphical_Appearance.linkInfo.FirstLink.arrow=ATOM3Boolean()
    self.obj36.Graphical_Appearance.linkInfo.FirstLink.arrow.setValue((' ', 0))
    self.obj36.Graphical_Appearance.linkInfo.FirstLink.arrow.config = 0
    self.obj36.Graphical_Appearance.linkInfo.FirstLink.arrowShape1=ATOM3Integer(8)
    self.obj36.Graphical_Appearance.linkInfo.FirstLink.arrowShape2=ATOM3Integer(10)
    self.obj36.Graphical_Appearance.linkInfo.FirstLink.arrowShape3=ATOM3Integer(3)
    self.obj36.Graphical_Appearance.linkInfo.FirstLink.decoration=ATOM3Appearance()
    self.obj36.Graphical_Appearance.linkInfo.FirstLink.decoration.setValue( ('directLink_S_1stLink', self.obj36.Graphical_Appearance.linkInfo.FirstLink))
    self.obj36.Graphical_Appearance.linkInfo.FirstSegment= widthXfillXdecoration()
    self.obj36.Graphical_Appearance.linkInfo.FirstSegment.width=ATOM3Integer(2)
    self.obj36.Graphical_Appearance.linkInfo.FirstSegment.fill=ATOM3String('black', 20)
    self.obj36.Graphical_Appearance.linkInfo.FirstSegment.stipple=ATOM3String('', 20)
    self.obj36.Graphical_Appearance.linkInfo.FirstSegment.arrow=ATOM3Boolean()
    self.obj36.Graphical_Appearance.linkInfo.FirstSegment.arrow.setValue((' ', 0))
    self.obj36.Graphical_Appearance.linkInfo.FirstSegment.arrow.config = 0
    self.obj36.Graphical_Appearance.linkInfo.FirstSegment.arrowShape1=ATOM3Integer(8)
    self.obj36.Graphical_Appearance.linkInfo.FirstSegment.arrowShape2=ATOM3Integer(10)
    self.obj36.Graphical_Appearance.linkInfo.FirstSegment.arrowShape3=ATOM3Integer(3)
    self.obj36.Graphical_Appearance.linkInfo.FirstSegment.decoration=ATOM3Appearance()
    self.obj36.Graphical_Appearance.linkInfo.FirstSegment.decoration.setValue( ('directLink_S_1stSegment', self.obj36.Graphical_Appearance.linkInfo.FirstSegment))
    self.obj36.Graphical_Appearance.linkInfo.FirstSegment.decoration_Position=ATOM3Enum(['Up', 'Down', 'Middle', 'No decoration'],3,0)
    self.obj36.Graphical_Appearance.linkInfo.Center=ATOM3Appearance()
    self.obj36.Graphical_Appearance.linkInfo.Center.setValue( ('directLink_S_Center', self.obj36.Graphical_Appearance.linkInfo))
    self.obj36.Graphical_Appearance.linkInfo.SecondSegment= widthXfillXdecoration()
    self.obj36.Graphical_Appearance.linkInfo.SecondSegment.width=ATOM3Integer(2)
    self.obj36.Graphical_Appearance.linkInfo.SecondSegment.fill=ATOM3String('black', 20)
    self.obj36.Graphical_Appearance.linkInfo.SecondSegment.stipple=ATOM3String('', 20)
    self.obj36.Graphical_Appearance.linkInfo.SecondSegment.arrow=ATOM3Boolean()
    self.obj36.Graphical_Appearance.linkInfo.SecondSegment.arrow.setValue((' ', 0))
    self.obj36.Graphical_Appearance.linkInfo.SecondSegment.arrow.config = 0
    self.obj36.Graphical_Appearance.linkInfo.SecondSegment.arrowShape1=ATOM3Integer(8)
    self.obj36.Graphical_Appearance.linkInfo.SecondSegment.arrowShape2=ATOM3Integer(10)
    self.obj36.Graphical_Appearance.linkInfo.SecondSegment.arrowShape3=ATOM3Integer(3)
    self.obj36.Graphical_Appearance.linkInfo.SecondSegment.decoration=ATOM3Appearance()
    self.obj36.Graphical_Appearance.linkInfo.SecondSegment.decoration.setValue( ('directLink_S_2ndSegment', self.obj36.Graphical_Appearance.linkInfo.SecondSegment))
    self.obj36.Graphical_Appearance.linkInfo.SecondSegment.decoration_Position=ATOM3Enum(['Up', 'Down', 'Middle', 'No decoration'],3,0)
    self.obj36.Graphical_Appearance.linkInfo.SecondLink= stickylink()
    self.obj36.Graphical_Appearance.linkInfo.SecondLink.arrow=ATOM3Boolean()
    self.obj36.Graphical_Appearance.linkInfo.SecondLink.arrow.setValue((' ', 1))
    self.obj36.Graphical_Appearance.linkInfo.SecondLink.arrow.config = 0
    self.obj36.Graphical_Appearance.linkInfo.SecondLink.arrowShape1=ATOM3Integer(8)
    self.obj36.Graphical_Appearance.linkInfo.SecondLink.arrowShape2=ATOM3Integer(10)
    self.obj36.Graphical_Appearance.linkInfo.SecondLink.arrowShape3=ATOM3Integer(3)
    self.obj36.Graphical_Appearance.linkInfo.SecondLink.decoration=ATOM3Appearance()
    self.obj36.Graphical_Appearance.linkInfo.SecondLink.decoration.setValue( ('directLink_S_2ndLink', self.obj36.Graphical_Appearance.linkInfo.SecondLink))
    self.obj36.Graphical_Appearance.linkInfo.FirstLink.decoration.semObject=self.obj36.Graphical_Appearance.semObject
    self.obj36.Graphical_Appearance.linkInfo.FirstSegment.decoration.semObject=self.obj36.Graphical_Appearance.semObject
    self.obj36.Graphical_Appearance.linkInfo.Center.semObject=self.obj36.Graphical_Appearance.semObject
    self.obj36.Graphical_Appearance.linkInfo.SecondSegment.decoration.semObject=self.obj36.Graphical_Appearance.semObject
    self.obj36.Graphical_Appearance.linkInfo.SecondLink.decoration.semObject=self.obj36.Graphical_Appearance.semObject

    # name
    self.obj36.name.setValue('directLink_S')

    # displaySelect
    self.obj36.displaySelect.setValue( (['attributes', 'constraints', 'actions', 'cardinality'], [0, 0, 0, 0]) )
    self.obj36.displaySelect.config = 0

    # attributes
    self.obj36.attributes.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    cobj2=ATOM3Attribute(self.types)
    cobj2.setValue(('associationType', 'String', None, ('Key', 0), ('Direct Editing', 1)))
    cobj2.initialValue=ATOM3String('t_', 20)
    cobj2.isDerivedAttribute = False
    lcobj2.append(cobj2)
    self.obj36.attributes.setValue(lcobj2)

    # cardinality
    self.obj36.cardinality.setActionFlags([ 0, 1, 0, 0])
    lcobj2 =[]
    cobj2=ATOM3Connection()
    cobj2.setValue(('MetaModelElement_S', (('Source', 'Destination'), 0), '0', 'N'))
    lcobj2.append(cobj2)
    cobj2=ATOM3Connection()
    cobj2.setValue(('MetaModelElement_S', (('Source', 'Destination'), 1), '0', 'N'))
    lcobj2.append(cobj2)
    self.obj36.cardinality.setValue(lcobj2)

    # display
    self.obj36.display.setValue('Attributes:\n  - associationType :: String\nMultiplicities:\n  - To MetaModelElement_S: 0 to N\n  - From MetaModelElement_S: 0 to N\n')
    self.obj36.display.setHeight(15)

    # Actions
    self.obj36.Actions.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    self.obj36.Actions.setValue(lcobj2)

    # Constraints
    self.obj36.Constraints.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    self.obj36.Constraints.setValue(lcobj2)

    self.obj36.graphClass_= graph_CD_Association3
    if self.genGraphics:
       new_obj = graph_CD_Association3(1529.2421875,86.0,self.obj36)
       new_obj.DrawObject(self.UMLmodel)
       self.UMLmodel.addtag_withtag("CD_Association3", new_obj.tag)
       new_obj.layConstraints = dict() # Graphical Layout Constraints 
       new_obj.layConstraints['scale'] = [1.8620000000000001, 1.185483870967742]
    else: new_obj = None
    self.obj36.graphObject_ = new_obj

    # Add node to the root: rootNode
    rootNode.addNode(self.obj36)
    self.globalAndLocalPostcondition(self.obj36, rootNode)
    self.obj36.postAction( rootNode.CREATE )

    self.obj37=CD_Association3(self)
    self.obj37.isGraphObjectVisual = True

    if(hasattr(self.obj37, '_setHierarchicalLink')):
      self.obj37._setHierarchicalLink(False)

    # QOCA
    self.obj37.QOCA.setValue(('QOCA', (['Python', 'OCL'], 1), (['PREaction', 'POSTaction'], 1), (['EDIT', 'SAVE', 'CREATE', 'CONNECT', 'DELETE', 'DISCONNECT', 'TRANSFORM', 'SELECT', 'DRAG', 'DROP', 'MOVE'], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), '"""\nQOCA Constraint Template\nNOTE: DO NOT select a POST/PRE action trigger\nConstraints will be added/removed in a logical manner by other mechanisms.\n"""\nreturn # <--- Remove this if you want to use QOCA\n\n# Get the high level constraint helper and solver\nfrom Qoca.atom3constraints.OffsetConstraints import OffsetConstraints\noc = OffsetConstraints(self.parent.qocaSolver)  \n\n# Constraint only makes sense if there exists 2 objects connected to this link\nif(not (self.in_connections_ and self.out_connections_)): return\n\n# Get the graphical objects (subclass of graphEntity/graphLink) \ngraphicalObjectLink = self.graphObject_\ngraphicalObjectSource = self.in_connections_[0].graphObject_\ngraphicalObjectTarget = self.out_connections_[0].graphObject_\nobjTuple = (graphicalObjectSource, graphicalObjectTarget, graphicalObjectLink)\n\n"""\nExample constraint, see Kernel/QOCA/atom3constraints/OffsetConstraints.py\nFor more types of constraints\n"""\noc.LeftExactDistance(objTuple, 20)\noc.resolve() # Resolve immediately after creating entity & constraint \n\n'))

    # Graphical_Appearance
    self.obj37.Graphical_Appearance.setValue( ('indirectLink_S', self.obj37))
    self.obj37.Graphical_Appearance.linkInfo=linkEditor(self,self.obj37.Graphical_Appearance.semObject, "indirectLink_S")
    self.obj37.Graphical_Appearance.linkInfo.FirstLink= stickylink()
    self.obj37.Graphical_Appearance.linkInfo.FirstLink.arrow=ATOM3Boolean()
    self.obj37.Graphical_Appearance.linkInfo.FirstLink.arrow.setValue((' ', 0))
    self.obj37.Graphical_Appearance.linkInfo.FirstLink.arrow.config = 0
    self.obj37.Graphical_Appearance.linkInfo.FirstLink.arrowShape1=ATOM3Integer(8)
    self.obj37.Graphical_Appearance.linkInfo.FirstLink.arrowShape2=ATOM3Integer(10)
    self.obj37.Graphical_Appearance.linkInfo.FirstLink.arrowShape3=ATOM3Integer(3)
    self.obj37.Graphical_Appearance.linkInfo.FirstLink.decoration=ATOM3Appearance()
    self.obj37.Graphical_Appearance.linkInfo.FirstLink.decoration.setValue( ('indirectLink_S_1stLink', self.obj37.Graphical_Appearance.linkInfo.FirstLink))
    self.obj37.Graphical_Appearance.linkInfo.FirstSegment= widthXfillXdecoration()
    self.obj37.Graphical_Appearance.linkInfo.FirstSegment.width=ATOM3Integer(2)
    self.obj37.Graphical_Appearance.linkInfo.FirstSegment.fill=ATOM3String('black', 20)
    self.obj37.Graphical_Appearance.linkInfo.FirstSegment.stipple=ATOM3String('', 20)
    self.obj37.Graphical_Appearance.linkInfo.FirstSegment.arrow=ATOM3Boolean()
    self.obj37.Graphical_Appearance.linkInfo.FirstSegment.arrow.setValue((' ', 0))
    self.obj37.Graphical_Appearance.linkInfo.FirstSegment.arrow.config = 0
    self.obj37.Graphical_Appearance.linkInfo.FirstSegment.arrowShape1=ATOM3Integer(8)
    self.obj37.Graphical_Appearance.linkInfo.FirstSegment.arrowShape2=ATOM3Integer(10)
    self.obj37.Graphical_Appearance.linkInfo.FirstSegment.arrowShape3=ATOM3Integer(3)
    self.obj37.Graphical_Appearance.linkInfo.FirstSegment.decoration=ATOM3Appearance()
    self.obj37.Graphical_Appearance.linkInfo.FirstSegment.decoration.setValue( ('indirectLink_S_1stSegment', self.obj37.Graphical_Appearance.linkInfo.FirstSegment))
    self.obj37.Graphical_Appearance.linkInfo.FirstSegment.decoration_Position=ATOM3Enum(['Up', 'Down', 'Middle', 'No decoration'],3,0)
    self.obj37.Graphical_Appearance.linkInfo.Center=ATOM3Appearance()
    self.obj37.Graphical_Appearance.linkInfo.Center.setValue( ('indirectLink_S_Center', self.obj37.Graphical_Appearance.linkInfo))
    self.obj37.Graphical_Appearance.linkInfo.SecondSegment= widthXfillXdecoration()
    self.obj37.Graphical_Appearance.linkInfo.SecondSegment.width=ATOM3Integer(2)
    self.obj37.Graphical_Appearance.linkInfo.SecondSegment.fill=ATOM3String('black', 20)
    self.obj37.Graphical_Appearance.linkInfo.SecondSegment.stipple=ATOM3String('', 20)
    self.obj37.Graphical_Appearance.linkInfo.SecondSegment.arrow=ATOM3Boolean()
    self.obj37.Graphical_Appearance.linkInfo.SecondSegment.arrow.setValue((' ', 0))
    self.obj37.Graphical_Appearance.linkInfo.SecondSegment.arrow.config = 0
    self.obj37.Graphical_Appearance.linkInfo.SecondSegment.arrowShape1=ATOM3Integer(8)
    self.obj37.Graphical_Appearance.linkInfo.SecondSegment.arrowShape2=ATOM3Integer(10)
    self.obj37.Graphical_Appearance.linkInfo.SecondSegment.arrowShape3=ATOM3Integer(3)
    self.obj37.Graphical_Appearance.linkInfo.SecondSegment.decoration=ATOM3Appearance()
    self.obj37.Graphical_Appearance.linkInfo.SecondSegment.decoration.setValue( ('indirectLink_S_2ndSegment', self.obj37.Graphical_Appearance.linkInfo.SecondSegment))
    self.obj37.Graphical_Appearance.linkInfo.SecondSegment.decoration_Position=ATOM3Enum(['Up', 'Down', 'Middle', 'No decoration'],3,0)
    self.obj37.Graphical_Appearance.linkInfo.SecondLink= stickylink()
    self.obj37.Graphical_Appearance.linkInfo.SecondLink.arrow=ATOM3Boolean()
    self.obj37.Graphical_Appearance.linkInfo.SecondLink.arrow.setValue((' ', 1))
    self.obj37.Graphical_Appearance.linkInfo.SecondLink.arrow.config = 0
    self.obj37.Graphical_Appearance.linkInfo.SecondLink.arrowShape1=ATOM3Integer(8)
    self.obj37.Graphical_Appearance.linkInfo.SecondLink.arrowShape2=ATOM3Integer(10)
    self.obj37.Graphical_Appearance.linkInfo.SecondLink.arrowShape3=ATOM3Integer(3)
    self.obj37.Graphical_Appearance.linkInfo.SecondLink.decoration=ATOM3Appearance()
    self.obj37.Graphical_Appearance.linkInfo.SecondLink.decoration.setValue( ('indirectLink_S_2ndLink', self.obj37.Graphical_Appearance.linkInfo.SecondLink))
    self.obj37.Graphical_Appearance.linkInfo.FirstLink.decoration.semObject=self.obj37.Graphical_Appearance.semObject
    self.obj37.Graphical_Appearance.linkInfo.FirstSegment.decoration.semObject=self.obj37.Graphical_Appearance.semObject
    self.obj37.Graphical_Appearance.linkInfo.Center.semObject=self.obj37.Graphical_Appearance.semObject
    self.obj37.Graphical_Appearance.linkInfo.SecondSegment.decoration.semObject=self.obj37.Graphical_Appearance.semObject
    self.obj37.Graphical_Appearance.linkInfo.SecondLink.decoration.semObject=self.obj37.Graphical_Appearance.semObject

    # name
    self.obj37.name.setValue('indirectLink_S')

    # displaySelect
    self.obj37.displaySelect.setValue( (['attributes', 'constraints', 'actions', 'cardinality'], [0, 0, 0, 0]) )
    self.obj37.displaySelect.config = 0

    # attributes
    self.obj37.attributes.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    self.obj37.attributes.setValue(lcobj2)

    # cardinality
    self.obj37.cardinality.setActionFlags([ 0, 1, 0, 0])
    lcobj2 =[]
    cobj2=ATOM3Connection()
    cobj2.setValue(('MetaModelElement_S', (('Source', 'Destination'), 0), '0', 'N'))
    lcobj2.append(cobj2)
    cobj2=ATOM3Connection()
    cobj2.setValue(('MetaModelElement_S', (('Source', 'Destination'), 1), '0', 'N'))
    lcobj2.append(cobj2)
    self.obj37.cardinality.setValue(lcobj2)

    # display
    self.obj37.display.setValue('Multiplicities:\n  - To MetaModelElement_S: 0 to N\n  - From MetaModelElement_S: 0 to N\n')
    self.obj37.display.setHeight(15)

    # Actions
    self.obj37.Actions.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    self.obj37.Actions.setValue(lcobj2)

    # Constraints
    self.obj37.Constraints.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    self.obj37.Constraints.setValue(lcobj2)

    self.obj37.graphClass_= graph_CD_Association3
    if self.genGraphics:
       new_obj = graph_CD_Association3(1587.7421875,231.5,self.obj37)
       new_obj.DrawObject(self.UMLmodel)
       self.UMLmodel.addtag_withtag("CD_Association3", new_obj.tag)
       new_obj.layConstraints = dict() # Graphical Layout Constraints 
       new_obj.layConstraints['scale'] = [1.8620000000000001, 1.0]
    else: new_obj = None
    self.obj37.graphObject_ = new_obj

    # Add node to the root: rootNode
    rootNode.addNode(self.obj37)
    self.globalAndLocalPostcondition(self.obj37, rootNode)
    self.obj37.postAction( rootNode.CREATE )

    self.obj38=CD_Association3(self)
    self.obj38.isGraphObjectVisual = True

    if(hasattr(self.obj38, '_setHierarchicalLink')):
      self.obj38._setHierarchicalLink(False)

    # QOCA
    self.obj38.QOCA.setValue(('QOCA', (['Python', 'OCL'], 1), (['PREaction', 'POSTaction'], 1), (['EDIT', 'SAVE', 'CREATE', 'CONNECT', 'DELETE', 'DISCONNECT', 'TRANSFORM', 'SELECT', 'DRAG', 'DROP', 'MOVE'], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), '"""\nQOCA Constraint Template\nNOTE: DO NOT select a POST/PRE action trigger\nConstraints will be added/removed in a logical manner by other mechanisms.\n"""\nreturn # <--- Remove this if you want to use QOCA\n\n# Get the high level constraint helper and solver\nfrom Qoca.atom3constraints.OffsetConstraints import OffsetConstraints\noc = OffsetConstraints(self.parent.qocaSolver)  \n\n# Constraint only makes sense if there exists 2 objects connected to this link\nif(not (self.in_connections_ and self.out_connections_)): return\n\n# Get the graphical objects (subclass of graphEntity/graphLink) \ngraphicalObjectLink = self.graphObject_\ngraphicalObjectSource = self.in_connections_[0].graphObject_\ngraphicalObjectTarget = self.out_connections_[0].graphObject_\nobjTuple = (graphicalObjectSource, graphicalObjectTarget, graphicalObjectLink)\n\n"""\nExample constraint, see Kernel/QOCA/atom3constraints/OffsetConstraints.py\nFor more types of constraints\n"""\noc.LeftExactDistance(objTuple, 20)\noc.resolve() # Resolve immediately after creating entity & constraint \n\n'))

    # Graphical_Appearance
    self.obj38.Graphical_Appearance.setValue( ('trace_link', self.obj38))
    self.obj38.Graphical_Appearance.linkInfo=linkEditor(self,self.obj38.Graphical_Appearance.semObject, "trace_link")
    self.obj38.Graphical_Appearance.linkInfo.FirstLink= stickylink()
    self.obj38.Graphical_Appearance.linkInfo.FirstLink.arrow=ATOM3Boolean()
    self.obj38.Graphical_Appearance.linkInfo.FirstLink.arrow.setValue((' ', 0))
    self.obj38.Graphical_Appearance.linkInfo.FirstLink.arrow.config = 0
    self.obj38.Graphical_Appearance.linkInfo.FirstLink.arrowShape1=ATOM3Integer(8)
    self.obj38.Graphical_Appearance.linkInfo.FirstLink.arrowShape2=ATOM3Integer(10)
    self.obj38.Graphical_Appearance.linkInfo.FirstLink.arrowShape3=ATOM3Integer(3)
    self.obj38.Graphical_Appearance.linkInfo.FirstLink.decoration=ATOM3Appearance()
    self.obj38.Graphical_Appearance.linkInfo.FirstLink.decoration.setValue( ('trace_link_1stLink', self.obj38.Graphical_Appearance.linkInfo.FirstLink))
    self.obj38.Graphical_Appearance.linkInfo.FirstSegment= widthXfillXdecoration()
    self.obj38.Graphical_Appearance.linkInfo.FirstSegment.width=ATOM3Integer(2)
    self.obj38.Graphical_Appearance.linkInfo.FirstSegment.fill=ATOM3String('black', 20)
    self.obj38.Graphical_Appearance.linkInfo.FirstSegment.stipple=ATOM3String('', 20)
    self.obj38.Graphical_Appearance.linkInfo.FirstSegment.arrow=ATOM3Boolean()
    self.obj38.Graphical_Appearance.linkInfo.FirstSegment.arrow.setValue((' ', 0))
    self.obj38.Graphical_Appearance.linkInfo.FirstSegment.arrow.config = 0
    self.obj38.Graphical_Appearance.linkInfo.FirstSegment.arrowShape1=ATOM3Integer(8)
    self.obj38.Graphical_Appearance.linkInfo.FirstSegment.arrowShape2=ATOM3Integer(10)
    self.obj38.Graphical_Appearance.linkInfo.FirstSegment.arrowShape3=ATOM3Integer(3)
    self.obj38.Graphical_Appearance.linkInfo.FirstSegment.decoration=ATOM3Appearance()
    self.obj38.Graphical_Appearance.linkInfo.FirstSegment.decoration.setValue( ('trace_link_1stSegment', self.obj38.Graphical_Appearance.linkInfo.FirstSegment))
    self.obj38.Graphical_Appearance.linkInfo.FirstSegment.decoration_Position=ATOM3Enum(['Up', 'Down', 'Middle', 'No decoration'],3,0)
    self.obj38.Graphical_Appearance.linkInfo.Center=ATOM3Appearance()
    self.obj38.Graphical_Appearance.linkInfo.Center.setValue( ('trace_link_Center', self.obj38.Graphical_Appearance.linkInfo))
    self.obj38.Graphical_Appearance.linkInfo.SecondSegment= widthXfillXdecoration()
    self.obj38.Graphical_Appearance.linkInfo.SecondSegment.width=ATOM3Integer(2)
    self.obj38.Graphical_Appearance.linkInfo.SecondSegment.fill=ATOM3String('black', 20)
    self.obj38.Graphical_Appearance.linkInfo.SecondSegment.stipple=ATOM3String('', 20)
    self.obj38.Graphical_Appearance.linkInfo.SecondSegment.arrow=ATOM3Boolean()
    self.obj38.Graphical_Appearance.linkInfo.SecondSegment.arrow.setValue((' ', 0))
    self.obj38.Graphical_Appearance.linkInfo.SecondSegment.arrow.config = 0
    self.obj38.Graphical_Appearance.linkInfo.SecondSegment.arrowShape1=ATOM3Integer(8)
    self.obj38.Graphical_Appearance.linkInfo.SecondSegment.arrowShape2=ATOM3Integer(10)
    self.obj38.Graphical_Appearance.linkInfo.SecondSegment.arrowShape3=ATOM3Integer(3)
    self.obj38.Graphical_Appearance.linkInfo.SecondSegment.decoration=ATOM3Appearance()
    self.obj38.Graphical_Appearance.linkInfo.SecondSegment.decoration.setValue( ('trace_link_2ndSegment', self.obj38.Graphical_Appearance.linkInfo.SecondSegment))
    self.obj38.Graphical_Appearance.linkInfo.SecondSegment.decoration_Position=ATOM3Enum(['Up', 'Down', 'Middle', 'No decoration'],3,0)
    self.obj38.Graphical_Appearance.linkInfo.SecondLink= stickylink()
    self.obj38.Graphical_Appearance.linkInfo.SecondLink.arrow=ATOM3Boolean()
    self.obj38.Graphical_Appearance.linkInfo.SecondLink.arrow.setValue((' ', 1))
    self.obj38.Graphical_Appearance.linkInfo.SecondLink.arrow.config = 0
    self.obj38.Graphical_Appearance.linkInfo.SecondLink.arrowShape1=ATOM3Integer(8)
    self.obj38.Graphical_Appearance.linkInfo.SecondLink.arrowShape2=ATOM3Integer(10)
    self.obj38.Graphical_Appearance.linkInfo.SecondLink.arrowShape3=ATOM3Integer(3)
    self.obj38.Graphical_Appearance.linkInfo.SecondLink.decoration=ATOM3Appearance()
    self.obj38.Graphical_Appearance.linkInfo.SecondLink.decoration.setValue( ('trace_link_2ndLink', self.obj38.Graphical_Appearance.linkInfo.SecondLink))
    self.obj38.Graphical_Appearance.linkInfo.FirstLink.decoration.semObject=self.obj38.Graphical_Appearance.semObject
    self.obj38.Graphical_Appearance.linkInfo.FirstSegment.decoration.semObject=self.obj38.Graphical_Appearance.semObject
    self.obj38.Graphical_Appearance.linkInfo.Center.semObject=self.obj38.Graphical_Appearance.semObject
    self.obj38.Graphical_Appearance.linkInfo.SecondSegment.decoration.semObject=self.obj38.Graphical_Appearance.semObject
    self.obj38.Graphical_Appearance.linkInfo.SecondLink.decoration.semObject=self.obj38.Graphical_Appearance.semObject

    # name
    self.obj38.name.setValue('trace_link')

    # displaySelect
    self.obj38.displaySelect.setValue( (['attributes', 'constraints', 'actions', 'cardinality'], [0, 0, 0, 0]) )
    self.obj38.displaySelect.config = 0

    # attributes
    self.obj38.attributes.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    self.obj38.attributes.setValue(lcobj2)

    # cardinality
    self.obj38.cardinality.setActionFlags([ 0, 1, 0, 0])
    lcobj2 =[]
    cobj2=ATOM3Connection()
    cobj2.setValue(('MetaModelElement_S', (('Source', 'Destination'), 0), '0', 'N'))
    lcobj2.append(cobj2)
    cobj2=ATOM3Connection()
    cobj2.setValue(('MetaModelElement_T', (('Source', 'Destination'), 1), '0', 'N'))
    lcobj2.append(cobj2)
    self.obj38.cardinality.setValue(lcobj2)

    # display
    self.obj38.display.setValue('Multiplicities:\n  - To MetaModelElement_S: 0 to N\n  - From MetaModelElement_T: 0 to N\n')
    self.obj38.display.setHeight(15)

    # Actions
    self.obj38.Actions.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    self.obj38.Actions.setValue(lcobj2)

    # Constraints
    self.obj38.Constraints.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    self.obj38.Constraints.setValue(lcobj2)

    self.obj38.graphClass_= graph_CD_Association3
    if self.genGraphics:
       new_obj = graph_CD_Association3(1502.5,520.0,self.obj38)
       new_obj.DrawObject(self.UMLmodel)
       self.UMLmodel.addtag_withtag("CD_Association3", new_obj.tag)
       new_obj.layConstraints = dict() # Graphical Layout Constraints 
       new_obj.layConstraints['scale'] = [1.855, 1.0]
    else: new_obj = None
    self.obj38.graphObject_ = new_obj

    # Add node to the root: rootNode
    rootNode.addNode(self.obj38)
    self.globalAndLocalPostcondition(self.obj38, rootNode)
    self.obj38.postAction( rootNode.CREATE )

    self.obj39=CD_Association3(self)
    self.obj39.isGraphObjectVisual = True

    if(hasattr(self.obj39, '_setHierarchicalLink')):
      self.obj39._setHierarchicalLink(False)

    # QOCA
    self.obj39.QOCA.setValue(('QOCA', (['Python', 'OCL'], 1), (['PREaction', 'POSTaction'], 1), (['EDIT', 'SAVE', 'CREATE', 'CONNECT', 'DELETE', 'DISCONNECT', 'TRANSFORM', 'SELECT', 'DRAG', 'DROP', 'MOVE'], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), '"""\nQOCA Constraint Template\nNOTE: DO NOT select a POST/PRE action trigger\nConstraints will be added/removed in a logical manner by other mechanisms.\n"""\nreturn # <--- Remove this if you want to use QOCA\n\n# Get the high level constraint helper and solver\nfrom Qoca.atom3constraints.OffsetConstraints import OffsetConstraints\noc = OffsetConstraints(self.parent.qocaSolver)  \n\n# Constraint only makes sense if there exists 2 objects connected to this link\nif(not (self.in_connections_ and self.out_connections_)): return\n\n# Get the graphical objects (subclass of graphEntity/graphLink) \ngraphicalObjectLink = self.graphObject_\ngraphicalObjectSource = self.in_connections_[0].graphObject_\ngraphicalObjectTarget = self.out_connections_[0].graphObject_\nobjTuple = (graphicalObjectSource, graphicalObjectTarget, graphicalObjectLink)\n\n"""\nExample constraint, see Kernel/QOCA/atom3constraints/OffsetConstraints.py\nFor more types of constraints\n"""\noc.LeftExactDistance(objTuple, 20)\noc.resolve() # Resolve immediately after creating entity & constraint \n\n'))

    # Graphical_Appearance
    self.obj39.Graphical_Appearance.setValue( ('backward_link', self.obj39))
    self.obj39.Graphical_Appearance.linkInfo=linkEditor(self,self.obj39.Graphical_Appearance.semObject, "backward_link")
    self.obj39.Graphical_Appearance.linkInfo.FirstLink= stickylink()
    self.obj39.Graphical_Appearance.linkInfo.FirstLink.arrow=ATOM3Boolean()
    self.obj39.Graphical_Appearance.linkInfo.FirstLink.arrow.setValue((' ', 0))
    self.obj39.Graphical_Appearance.linkInfo.FirstLink.arrow.config = 0
    self.obj39.Graphical_Appearance.linkInfo.FirstLink.arrowShape1=ATOM3Integer(8)
    self.obj39.Graphical_Appearance.linkInfo.FirstLink.arrowShape2=ATOM3Integer(10)
    self.obj39.Graphical_Appearance.linkInfo.FirstLink.arrowShape3=ATOM3Integer(3)
    self.obj39.Graphical_Appearance.linkInfo.FirstLink.decoration=ATOM3Appearance()
    self.obj39.Graphical_Appearance.linkInfo.FirstLink.decoration.setValue( ('backward_link_1stLink', self.obj39.Graphical_Appearance.linkInfo.FirstLink))
    self.obj39.Graphical_Appearance.linkInfo.FirstSegment= widthXfillXdecoration()
    self.obj39.Graphical_Appearance.linkInfo.FirstSegment.width=ATOM3Integer(2)
    self.obj39.Graphical_Appearance.linkInfo.FirstSegment.fill=ATOM3String('black', 20)
    self.obj39.Graphical_Appearance.linkInfo.FirstSegment.stipple=ATOM3String('', 20)
    self.obj39.Graphical_Appearance.linkInfo.FirstSegment.arrow=ATOM3Boolean()
    self.obj39.Graphical_Appearance.linkInfo.FirstSegment.arrow.setValue((' ', 0))
    self.obj39.Graphical_Appearance.linkInfo.FirstSegment.arrow.config = 0
    self.obj39.Graphical_Appearance.linkInfo.FirstSegment.arrowShape1=ATOM3Integer(8)
    self.obj39.Graphical_Appearance.linkInfo.FirstSegment.arrowShape2=ATOM3Integer(10)
    self.obj39.Graphical_Appearance.linkInfo.FirstSegment.arrowShape3=ATOM3Integer(3)
    self.obj39.Graphical_Appearance.linkInfo.FirstSegment.decoration=ATOM3Appearance()
    self.obj39.Graphical_Appearance.linkInfo.FirstSegment.decoration.setValue( ('backward_link_1stSegment', self.obj39.Graphical_Appearance.linkInfo.FirstSegment))
    self.obj39.Graphical_Appearance.linkInfo.FirstSegment.decoration_Position=ATOM3Enum(['Up', 'Down', 'Middle', 'No decoration'],3,0)
    self.obj39.Graphical_Appearance.linkInfo.Center=ATOM3Appearance()
    self.obj39.Graphical_Appearance.linkInfo.Center.setValue( ('backward_link_Center', self.obj39.Graphical_Appearance.linkInfo))
    self.obj39.Graphical_Appearance.linkInfo.SecondSegment= widthXfillXdecoration()
    self.obj39.Graphical_Appearance.linkInfo.SecondSegment.width=ATOM3Integer(2)
    self.obj39.Graphical_Appearance.linkInfo.SecondSegment.fill=ATOM3String('black', 20)
    self.obj39.Graphical_Appearance.linkInfo.SecondSegment.stipple=ATOM3String('', 20)
    self.obj39.Graphical_Appearance.linkInfo.SecondSegment.arrow=ATOM3Boolean()
    self.obj39.Graphical_Appearance.linkInfo.SecondSegment.arrow.setValue((' ', 0))
    self.obj39.Graphical_Appearance.linkInfo.SecondSegment.arrow.config = 0
    self.obj39.Graphical_Appearance.linkInfo.SecondSegment.arrowShape1=ATOM3Integer(8)
    self.obj39.Graphical_Appearance.linkInfo.SecondSegment.arrowShape2=ATOM3Integer(10)
    self.obj39.Graphical_Appearance.linkInfo.SecondSegment.arrowShape3=ATOM3Integer(3)
    self.obj39.Graphical_Appearance.linkInfo.SecondSegment.decoration=ATOM3Appearance()
    self.obj39.Graphical_Appearance.linkInfo.SecondSegment.decoration.setValue( ('backward_link_2ndSegment', self.obj39.Graphical_Appearance.linkInfo.SecondSegment))
    self.obj39.Graphical_Appearance.linkInfo.SecondSegment.decoration_Position=ATOM3Enum(['Up', 'Down', 'Middle', 'No decoration'],3,0)
    self.obj39.Graphical_Appearance.linkInfo.SecondLink= stickylink()
    self.obj39.Graphical_Appearance.linkInfo.SecondLink.arrow=ATOM3Boolean()
    self.obj39.Graphical_Appearance.linkInfo.SecondLink.arrow.setValue((' ', 1))
    self.obj39.Graphical_Appearance.linkInfo.SecondLink.arrow.config = 0
    self.obj39.Graphical_Appearance.linkInfo.SecondLink.arrowShape1=ATOM3Integer(8)
    self.obj39.Graphical_Appearance.linkInfo.SecondLink.arrowShape2=ATOM3Integer(10)
    self.obj39.Graphical_Appearance.linkInfo.SecondLink.arrowShape3=ATOM3Integer(3)
    self.obj39.Graphical_Appearance.linkInfo.SecondLink.decoration=ATOM3Appearance()
    self.obj39.Graphical_Appearance.linkInfo.SecondLink.decoration.setValue( ('backward_link_2ndLink', self.obj39.Graphical_Appearance.linkInfo.SecondLink))
    self.obj39.Graphical_Appearance.linkInfo.FirstLink.decoration.semObject=self.obj39.Graphical_Appearance.semObject
    self.obj39.Graphical_Appearance.linkInfo.FirstSegment.decoration.semObject=self.obj39.Graphical_Appearance.semObject
    self.obj39.Graphical_Appearance.linkInfo.Center.semObject=self.obj39.Graphical_Appearance.semObject
    self.obj39.Graphical_Appearance.linkInfo.SecondSegment.decoration.semObject=self.obj39.Graphical_Appearance.semObject
    self.obj39.Graphical_Appearance.linkInfo.SecondLink.decoration.semObject=self.obj39.Graphical_Appearance.semObject

    # name
    self.obj39.name.setValue('backward_link')

    # displaySelect
    self.obj39.displaySelect.setValue( (['attributes', 'constraints', 'actions', 'cardinality'], [0, 0, 0, 0]) )
    self.obj39.displaySelect.config = 0

    # attributes
    self.obj39.attributes.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    cobj2=ATOM3Attribute(self.types)
    cobj2.setValue(('type', 'String', None, ('Key', 0), ('Direct Editing', 1)))
    cobj2.initialValue=ATOM3String('ruleDef', 20)
    cobj2.isDerivedAttribute = False
    lcobj2.append(cobj2)
    self.obj39.attributes.setValue(lcobj2)

    # cardinality
    self.obj39.cardinality.setActionFlags([ 0, 1, 0, 0])
    lcobj2 =[]
    cobj2=ATOM3Connection()
    cobj2.setValue(('MetaModelElement_S', (('Source', 'Destination'), 0), '0', 'N'))
    lcobj2.append(cobj2)
    cobj2=ATOM3Connection()
    cobj2.setValue(('MetaModelElement_T', (('Source', 'Destination'), 1), '0', 'N'))
    lcobj2.append(cobj2)
    self.obj39.cardinality.setValue(lcobj2)

    # display
    self.obj39.display.setValue('Attributes:\n  - type :: String\nMultiplicities:\n  - To MetaModelElement_S: 0 to N\n  - From MetaModelElement_T: 0 to N\n')
    self.obj39.display.setHeight(15)

    # Actions
    self.obj39.Actions.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    self.obj39.Actions.setValue(lcobj2)

    # Constraints
    self.obj39.Constraints.setActionFlags([ 1, 1, 1, 0])
    lcobj2 =[]
    self.obj39.Constraints.setValue(lcobj2)

    self.obj39.graphClass_= graph_CD_Association3
    if self.genGraphics:
       new_obj = graph_CD_Association3(1224.05859375,391.174180328,self.obj39)
       new_obj.DrawObject(self.UMLmodel)
       self.UMLmodel.addtag_withtag("CD_Association3", new_obj.tag)
       new_obj.layConstraints = dict() # Graphical Layout Constraints 
       new_obj.layConstraints['scale'] = [1.855, 1.185483870967742]
    else: new_obj = None
    self.obj39.graphObject_ = new_obj

    # Add node to the root: rootNode
    rootNode.addNode(self.obj39)
    self.globalAndLocalPostcondition(self.obj39, rootNode)
    self.obj39.postAction( rootNode.CREATE )

    # Connections for obj28 (graphObject_: Obj0) named MatchModel
    self.drawConnections(
(self.obj28,self.obj32,[148.375, 161.0, 127.0, 511.0],"true", 2),
(self.obj28,self.obj33,[231.2265625, 89.0, 425.5625, 81.0],"true", 2) )
    # Connections for obj29 (graphObject_: Obj1) named ApplyModel
    self.drawConnections(
(self.obj29,self.obj34,[286.8359375, 1381.0, 553.123046875, 1375.0],"true", 2) )
    # Connections for obj30 (graphObject_: Obj2) named MetaModelElement_S
    self.drawConnections(
(self.obj30,self.obj36,[829.484375, 108.11475409836063, 1529.2421875, 86.0, 1529.2421875, 86.0],"true", 3),
(self.obj30,self.obj37,[829.484375, 227.40163934426232, 1587.7421875, 231.5, 1587.7421875, 231.5],"true", 3) )
    # Connections for obj31 (graphObject_: Obj3) named MetaModelElement_T
    self.drawConnections(
(self.obj31,self.obj35,[1185.09375, 1313.2622950819673, 1373.580078125, 1220.0, 1373.5800781200001, 1220.0],"true", 3),
(self.obj31,self.obj38,[1143.75, 1240.967213114754, 1531.0, 547.0, 1273.0, 626.0, 1502.5, 520.0],"true", 4),
(self.obj31,self.obj39,[1143.75, 1240.967213114754, 1217.875, 547.5, 1224.05859375, 391.17418032799998],"true", 3) )
    # Connections for obj32 (graphObject_: Obj4) named paired_with
    self.drawConnections(
(self.obj32,self.obj29,[127.0, 511.0, 119.0, 1341.0],"true", 2) )
    # Connections for obj33 (graphObject_: Obj6) named match_contains
    self.drawConnections(
(self.obj33,self.obj30,[425.5625, 81.0, 600.890625, 108.11475409836063],"true", 2) )
    # Connections for obj34 (graphObject_: Obj8) named apply_contains
    self.drawConnections(
(self.obj34,self.obj31,[553.123046875, 1375.0, 960.65625, 1363.8688524590164],"true", 2) )
    # Connections for obj35 (graphObject_: Obj10) named directLink_T
    self.drawConnections(
(self.obj35,self.obj31,[1373.5800781200001, 1220.0, 1373.580078125, 1220.0, 1185.09375, 1313.2622950819673],"true", 3) )
    # Connections for obj36 (graphObject_: Obj12) named directLink_S
    self.drawConnections(
(self.obj36,self.obj30,[1529.2421875, 86.0, 1218.2421875, 100.0, 829.484375, 108.11475409836063],"true", 3) )
    # Connections for obj37 (graphObject_: Obj14) named indirectLink_S
    self.drawConnections(
(self.obj37,self.obj30,[1587.7421875, 231.5, 1609.7421875, 307.5, 829.484375, 281.62295081967216],"true", 3) )
    # Connections for obj38 (graphObject_: Obj16) named trace_link
    self.drawConnections(
(self.obj38,self.obj30,[1502.5, 520.0, 1485.0, 309.0, 1486.0, 309.0, 829.484375, 281.62295081967216],"true", 4) )
    # Connections for obj39 (graphObject_: Obj18) named backward_link
    self.drawConnections(
(self.obj39,self.obj30,[1224.05859375, 391.17418032799998, 1230.2421875, 234.84836065573768, 829.484375, 227.40163934426232],"true", 3) )

newfunction = UMLRT2Kiltera_MM_MDL

loadedMMName = 'CD_ClassDiagramsV3_META'

atom3version = '0.3'
